Skip to content

设计模式 ​

设计模式(Design Patterns)是软件开发中反复出现的问题的通用解决方案,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(GoF 四人组)在 1994 年系统总结,共 23 种经典模式。

一、设计模式六大原则 ​

原则英文核心思想
单一职责原则SRP(Single Responsibility Principle)一个类只负责一个职责
开闭原则OCP(Open-Closed Principle)对扩展开放,对修改关闭
里氏替换原则LSP(Liskov Substitution Principle)子类可以替换父类且行为不变
接口隔离原则ISP(Interface Segregation Principle)接口应该小而专一,不强迫实现不需要的方法
依赖倒置原则DIP(Dependency Inversion Principle)依赖抽象,不依赖具体实现
迪米特法则LoD(Law of Demeter)最少知识原则,只与直接朋友通信

SOLID = SRP + OCP + LSP + ISP + DIP

二、23 种设计模式分类 ​

创建型模式(5 种) ​

关注对象的创建过程,将对象的创建与使用分离。

模式一句话描述
单例模式确保类只有一个实例
工厂方法模式子类决定创建哪个对象
抽象工厂模式创建一系列相关对象
建造者模式分步骤构建复杂对象
原型模式通过克隆创建对象

结构型模式(7 种) ​

关注类和对象的组合,形成更大的结构。

模式一句话描述
适配器模式转换接口,让不兼容的类一起工作
桥接模式分离抽象与实现,各自独立变化
组合模式树形结构处理整体与部分
装饰器模式动态给对象添加功能
外观模式提供统一的高层接口
享元模式共享细粒度对象,节省内存
代理模式控制对对象的访问

行为型模式(11 种) ​

关注对象间的通信和职责分配。

模式一句话描述
责任链模式请求沿链传递,直到被处理
命令模式将请求封装为对象
解释器模式定义语言的文法并解释
迭代器模式统一遍历集合元素
中介者模式用中介对象封装交互
备忘录模式保存和恢复对象状态
观察者模式一对多依赖通知
状态模式对象状态改变时改变行为
策略模式算法族可互相替换
模板方法模式定义算法骨架,子类实现细节
访问者模式在不改变元素类的前提下定义新操作

三、模式之间的关系 ​

创建型模式(对象创建)
    │
    ├── 单例 ──→ 享元(共享实例思想)
    ├── 工厂方法 ──→ 抽象工厂(扩展维度)
    ├── 建造者 ──→ 组合(构建复杂对象)
    └── 原型 ──→ 备忘录(状态保存/恢复)

结构型模式(对象组合)
    │
    ├── 适配器 ──→ 外观(接口转换思想)
    ├── 装饰器 ──→ 代理(包装对象,增强功能)
    ├── 桥接 ──→ 策略(分离变化维度)
    └── 组合 ──→ 责任链(树形递归结构)

行为型模式(对象通信)
    │
    ├── 策略 ──→ 状态(算法/行为切换)
    ├── 观察者 ──→ 中介者(通信方式变化)
    ├── 模板方法 ──→ 策略(继承 vs 组合)
    └── 命令 ──→ 备忘录(操作记录与撤销)

四、学习路线建议 ​

入门必学(5 个):
  单例 → 工厂方法 → 策略 → 观察者 → 代理
  → 这 5 个最常用,几乎每个项目都会遇到

进阶学习(8 个):
  装饰器 → 模板方法 → 责任链 → 建造者 → 适配器
  → 外观 → 组合 → 状态

深入理解(10 个):
  抽象工厂 → 原型 → 桥接 → 享元 → 命令
  → 迭代器 → 中介者 → 备忘录 → 访问者 → 解释器