设计模式的分类

书中将 23 种设计模式分为三大类:

1. 创建型(Creational Patterns)

关注对象的创建方式,解决“如何合理地创建对象”的问题。

  • 单例模式(Singleton):保证一个类只有一个实例,并提供全局访问点。
  • 工厂方法(Factory Method)抽象工厂(Abstract Factory):将对象的创建过程与使用解耦。
  • 建造者(Builder):分步骤构造复杂对象。
  • 原型(Prototype):通过拷贝已有实例来创建新对象。

这些模式核心在于提高灵活性,避免直接依赖具体类。

2. 结构型(Structural Patterns)

强调如何将类或对象组合成更大的结构,以获得更高的扩展性和复用性。

  • 适配器(Adapter):解决接口不兼容的问题。
  • 装饰器(Decorator):在不修改原类的情况下动态扩展功能。
  • 代理(Proxy):在对象访问前后增加额外的控制逻辑。
  • 组合(Composite):用树形结构表示整体与部分的层次关系。
  • 外观(Facade):为复杂系统提供统一接口。
  • 享元(Flyweight):共享对象以节省内存。

这些模式更注重“结构复用”,往往能减少系统的复杂度。

3. 行为型(Behavioral Patterns)

聚焦对象之间的交互和职责分配,强调“如何更好地沟通”。

  • 观察者(Observer):实现发布-订阅机制。
  • 策略(Strategy):将算法的实现与使用分离,允许动态切换。
  • 命令(Command):将请求封装为对象,以支持撤销、队列等操作。
  • 责任链(Chain of Responsibility):将请求沿着对象链传递,直到被处理。
  • 状态(State):允许对象在内部状态变化时改变行为。
  • 模板方法(Template Method):在父类中定义算法骨架,具体步骤延迟到子类实现。

行为型模式的核心是降低耦合、提升协作效率