主页 > 电脑硬件  > 

设计模式:记录所有设计模式方便后续复习

设计模式:记录所有设计模式方便后续复习
创建型设计模式 模式名称概念应用场景优点缺点单例模式确保一个类只有一个实例,并提供全局访问点数据库连接池、线程池、配置管理节约资源、方便管理违反单一职责原则、扩展性差、不利于测试工厂方法模式定义创建对象的接口,让子类决定实例化哪个类,将类的实例化延迟到子类根据不同条件创建不同类型对象,如不同日志记录器代码灵活、可维护性高类的数量可能过多抽象工厂模式提供创建一系列相关或依赖对象的接口,无需指定具体类创建不同风格的 UI 组件,如不同系统下的按钮、文本框提高代码可维护性和可扩展性实现复杂,修改困难建造者模式将复杂对象的构建与表示分离,相同构建过程可创建不同表示创建复杂对象,如汽车、电脑构建过程灵活、代码可读性高代码量增加原型模式用原型实例指定创建对象的种类,通过拷贝原型创建新对象对象创建成本高的场景,如数据库查询结果对象复制提高创建对象效率深拷贝和浅拷贝处理复杂 结构型设计模式 模式名称概念应用场景优点缺点适配器模式将一个类的接口转换成客户希望的另一个接口,使不兼容的类能一起工作旧系统与新系统接口适配,数据格式转换提高类的复用性、灵活性代码复杂度增加桥接模式将抽象部分与实现部分分离,使它们可独立变化类存在多个变化维度,如不同颜色和形状的图形提高系统可扩展性和可维护性理解和设计难度大组合模式将对象组合成树形结构表示 “部分 - 整体” 层次结构,使用户对单个和组合对象使用一致文件系统、菜单系统简化客户端代码、方便添加新组件可能导致设计过于通用装饰器模式动态给对象添加额外职责,比生成子类更灵活给对象添加日志记录、权限验证等功能灵活性高、可扩展性强多层装饰时调试困难外观模式为子系统一组接口提供一致界面,定义高层接口使子系统更易用简化复杂系统接口,如操作系统文件管理系统简化客户端使用、降低耦合度不符合开闭原则享元模式运用共享技术支持大量细粒度对象游戏中的大量相同元素,如棋子、地图元素节约内存、提高性能逻辑复杂,维护成本高代理模式为其他对象提供代理以控制对该对象的访问远程代理、虚拟代理、保护代理等,如网络请求代理增强安全性、提高性能可能增加响应时间 行为型设计模式 模式名称概念应用场景优点缺点责任链模式使多个对象有机会处理请求,避免请求发送者和接收者耦合,请求沿链传递直到有对象处理审批流程、日志处理降低耦合度、可动态添加或修改处理者可能导致请求处理不明确命令模式将请求封装为对象,可用不同请求对客户参数化,支持请求排队、记录日志和撤销操作实现撤销、重做功能,如文本编辑器撤销操作可扩展性强、方便实现撤销和恢复类的数量增加解释器模式给定语言,定义其文法表示和解释器,用该表示解释语言句子编译器、正则表达式引擎易于改变和扩展文法复杂文法实现困难迭代器模式提供顺序访问聚合对象元素的方法,不暴露对象内部表示遍历各种集合,如列表、树简化遍历操作、支持多种遍历方式可能增加系统开销中介者模式用中介对象封装对象交互,使对象耦合松散,可独立改变交互聊天室、MVC 框架中的控制器降低耦合度、提高可维护性中介者可能过于复杂备忘录模式不破坏封装性,捕获对象内部状态并在对象外保存,可恢复对象状态游戏存档、文本编辑器撤销功能方便恢复对象状态、保护对象封装性可能占用大量内存观察者模式定义对象间一对多依赖关系,对象状态改变时通知并更新依赖对象消息通知系统、股票价格变化通知实现对象间松耦合、支持广播通信可能导致循环依赖状态模式允许对象在内部状态改变时改变其行为,对象看起来修改了类工作流、游戏角色状态变化提高代码可维护性和可扩展性类的数量增加策略模式定义一系列算法,将每个算法封装起来并使它们可互换,算法变化不影响使用算法的客户排序算法选择、支付方式选择算法可自由切换、避免多重条件判断策略类数量增多模板方法模式定义一个操作中的算法骨架,将一些步骤延迟到子类中,子类可在不改变算法结构的情况下重定义某些步骤数据库访问、文件处理提高代码复用性、便于维护可能限制子类的灵活性访问者模式表示一个作用于某对象结构中各元素的操作,使可在不改变各元素类的前提下定义作用于这些元素的新操作编译器语法树处理、报表生成增加新操作方便、符合开闭原则破坏对象封装性

设计模式有很多,主要会考察单例模式,策略模式,责任链模式,模板方法模式,工厂方法,抽象工厂方法,原型模式。发布这个主要是方便看,不用重新上网找。

标签:

设计模式:记录所有设计模式方便后续复习由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“设计模式:记录所有设计模式方便后续复习