设计模式分组

GoF设计模式著作中的23种设计模式分为3组:创建型(Creational)、结构型(Structural)和行为型(Behavional)。

创建型

创建型处理对象构造和引用。它们将对象实例的实例化责任从任何客户代码中抽象出来,从而让代码保持松散耦合,将创建负责对象的责任放到一个地方,这遵循了单一职责原则和分离关注点原则。

下面是“创建型”分组中的模式。

  • Abstract Factory(抽象工厂)模式:提供一个接口来创建一组相关的对象。
  • Factory Method(工厂方法)模式:支持使用一个类来委托创建有效对象的责任。
  • Builder(生成器)模式:将对象本身的构造分离出来,从而能够创建对象的不同版本。``
  • Prototype(原型)模式:能够从一个原型实例来复制或克隆类,而不是创建新实例。
  • Singleton(单例)模式:支持一个类只能实例化一次,并且只有一个可用来访问它的全局访问点。

结构型

结构型模式处理对象的组合与关系,以满足大型系统的需要。

下面是“创建型”分组中的模式。

  • Adapter(适配器)模式:使不兼容接口的类能够一起使用。
  • Bridge(桥接)模式:将抽象与其实现分离,允许实现和抽象彼此独立地改变。
  • Composite(组合)模式:可以像对待对象的单个实例那样来对待一组表示层次结构的对象。
  • Decorator(装饰器)模式:能够动态包装一个类并扩展其行为。
  • Facade(门面)模式:提供一个简单的接口并控制对一组复杂接口和子系统的访问。
  • Flyweight(享元)模式:提供一种在许多小类之间高效共享数据的方式。
  • Proxy(代理)模式:为一个实例化成本很高的更复杂的类提供一个占位符。

行为型

行为型模式处理对象之间在责任和算法方面的通信。这个分组中的模式将复杂行为封装起来并将其从系统控制流程中抽象出来,这样就是复杂系统更容易理解和维护。

下面是下“行为型”分组中的模式。

  • Chain of Responsibility(责任链)模式:允许将命令动态链接起来处理请求。
  • Command(命令)模式:将一个方法封装成一个对象,并将该命令的执行与它的调用者分离。
  • Interpreter(解释器)模式:指定如何执行某种语言中的语句。
  • Iterator(迭代器)模式:提供以形式化的方式来导航集合的方法。
  • Midiator(中介者)模式:定义一个对象,可以让其它两个对象进行通信而不必让它们知道彼此。
  • Memento(备忘录)模式:允许将对象恢复到以前的状态。
  • Observer(观察者)模式:定义一个或多个类在另一个类发生变化时接到报警。
  • State(状态)模式:允许对象通过委托给独立的、可改变的状态对象来改变自己的行为。
  • Strategy(策略)模式:能够将算法封装到一个类中并在运行时转换,以改变对象的行为。
  • Template Method(模板方法)模式:定义算法流程控制,但允许子类重写或实现执行步骤。
  • Visitor(访问者)模式:能够在类上执行新的功能而不影响类的结构。

各种设计模式意图、UML图、代码实现后续~~~

最新文章

  1. 关于join时显示no join predicate的那点事
  2. webform 光棒效果,删除操作弹出确定取消窗口
  3. Maven入门指南① :Maven 快速入门及简单使用
  4. a 锚点跳转滑动效果
  5. live555+ffmpeg如何提取关键帧(I帧,P帧,B帧)
  6. No goals have been specified for this build
  7. selenium操作滚动条的几种方式
  8. 通过OAF实现RTF多语言
  9. WEKA使用教程(经典教程转载)
  10. Tornado异步
  11. 完美解决打开github速度慢的问题
  12. 如何使用jQuery-ContextMenu实现右击菜单
  13. ACM Bone Collector
  14. `TypeError: torch.mm received an invalid combination of arguments - got (torch.FloatTensor, Variable),
  15. 现代JavaScript函数库 usuallyjs 的安装和使用
  16. codeforces#766 D. Mahmoud and a Dictionary (并查集)
  17. Oracle常用函数——COALESCE
  18. [Jmeter] Concurrency Thread Group
  19. asp.net网页中添加年月日时分秒星期。
  20. 记一次MSSQL到MySQL大数据迁移过程

热门文章

  1. 微信小程序实现搜索关键词高亮
  2. [贪心]D. 【例题4】国王游戏
  3. Simulink中Scope数据保存至Workspace制图
  4. 如何在 NET 程序万种死法中有效的生成 Dump (上)
  5. 2020 OO 第一单元总结 表达式求导
  6. 安全开发Java:日志注入,并没那么简单
  7. irreader网页订阅
  8. Go-24-异常处理机制
  9. C++ 内存模型之单独编译
  10. 使用Tensorflow Object Detection进行训练和推理