GOF 设计模式是经过总结、优化的代码设计经验,用于解决软件设计中的特定问题。设计模式通常分为三大类:创建型模式结构型模式行为型模式。以下是每个分类中的常见设计模式:

创建型模式

这些模式处理对象的创建问题,并提供更灵活、可复用的创建机制。

  1. 单例模式(Singleton Pattern): 确保一个类只有一个实例,并提供全局访问点。
  2. 工厂方法模式(Factory Method Pattern): 定义一个创建对象的接口,但由子类决定要实例化的类。
  3. 抽象工厂模式(Abstract Factory Pattern): 提供一个创建一系列相关或依赖对象的接口,而无需指定具体类。
  4. 生成器模式(Builder Pattern): 将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。
  5. 原型模式(Prototype Pattern): 通过复制现有对象来创建新对象,避免了对象的重复初始化。

结构型模式

这些模式关注类和对象的组合关系,解决系统的结构问题。

  1. 适配器模式(Adapter Pattern): 使得原本由于接口不兼容而不能一起工作的类可以一起工作。
  2. 桥接模式(Bridge Pattern): 将抽象部分与它的实现部分分离,使它们都可以独立地变化。
  3. 组合模式(Composite Pattern): 将对象组合成树形结构以表示”部分-整体”的层次结构,使得客户端可以统一地处理单个对象和组合对象。
  4. 装饰者模式(Decorator Pattern): 动态地给对象增加额外的职责。
  5. 外观模式(Facade Pattern): 提供一个统一的接口,用来访问子系统中的一群接口。
  6. 享元模式(Flyweight Pattern): 运用共享技术来支持大量细粒度的对象。
  7. 代理模式(Proxy Pattern): 为其他对象提供一种代理,以控制对这个对象的访问。

行为型模式

这些模式关注对象之间的职责划分和相互协作。

  1. 策略模式(Strategy Pattern): 定义一系列算法,将每一个算法封装起来,并且使它们可以互换。
  2. 模板方法模式(Template Method Pattern): 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。
  3. 观察者模式(Observer Pattern): 定义对象之间的一种一对多的依赖关系。
  4. 迭代器模式(Iterator Pattern): 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
  5. 职责链模式(Chain of Responsibility Pattern): 为请求创建一个接收者对象的链。
  6. 命令模式(Command Pattern): 将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。
  7. 备忘录模式(Memento Pattern): 在不破坏封装性的前提下,捕获并外部化一个对象的内部状态。
  8. 状态模式(State Pattern): 允许对象在内部状态改变时改变它的行为。
  9. 中介者模式(Mediator Pattern): 用一个中介对象来封装一系列对象的交互。
  10. 解释器模式(Interpreter Pattern): 给定一种语言,定义它的文法表示,并定义一个解释器来处理这个文法。