设计模式
GoF 23 种经典设计模式总览与学习路线
什么是设计模式
设计模式是前人在大量实践中总结出的可复用的解决方案模板。它不是可以直接复制粘贴的代码,而是解决特定问题的通用思路。
1995 年,四位作者(被称为 Gang of Four,简称 GoF)在《Design Patterns: Elements of Reusable Object-Oriented Software》一书中系统整理了 23 种设计模式,按目的分为三大类:
三大分类
| 分类 | 关注点 | 包含模式 |
|---|---|---|
| 创建型(Creational) | 对象怎么创建 | 单例、工厂方法、抽象工厂、建造者、原型 |
| 结构型(Structural) | 对象怎么组合 | 适配器、装饰器、代理、外观、桥接、组合、享元 |
| 行为型(Behavioral) | 对象怎么交互 | 观察者、策略、模版方法、责任链、命令、状态、迭代器、备忘录、中介者、访问者、解释器 |
六大设计原则(SOLID + 迪米特)
设计模式背后的指导思想是这些原则:
| 原则 | 一句话解释 |
|---|---|
| 单一职责原则(SRP) | 一个类只做一件事 |
| 开闭原则(OCP) | 对扩展开放,对修改关闭 |
| 里氏替换原则(LSP) | 子类能无缝替换父类 |
| 接口隔离原则(ISP) | 接口要小而专,不要大而全 |
| 依赖倒置原则(DIP) | 依赖抽象,不要依赖具体实现 |
| 迪米特法则(LoD) | 只和直接朋友通信,不和陌生人说话 |
学习建议
不需要一次学完 23 种。按实用频率,推荐的学习顺序:
- 高频必会:单例、工厂方法、策略、观察者、代理、装饰器、模版方法
- 进阶常用:建造者、适配器、外观、责任链、命令、状态
- 了解即可:抽象工厂、原型、桥接、组合、享元、迭代器、备忘录、中介者、访问者、解释器