设计模式不是“背八股”📚,而是工程实践里反复验证过的设计经验。
在Spring、MyBatis、JDK源码中,设计模式几乎无处不在。
设计模式是针对常见软件设计问题的一套通用解法。
GoF(四人帮)经典设计模式共 23 种,分为三大类:
| 模式 | 英文名 | 核心作用 |
|---|---|---|
| 单例模式 | Singleton | 保证一个类只有一个实例 |
| 工厂方法 | Factory Method | 把对象创建延迟到子类 |
| 抽象工厂 | Abstract Factory | 创建一族相关对象 |
| 建造者 | Builder | 复杂对象分步骤创建 |
| 原型模式 | Prototype | 通过拷贝快速创建对象 |
| 模式 | 英文名 | 核心作用 |
|---|---|---|
| 适配器 | Adapter | 兼容不一致接口 |
| 装饰器 | Decorator | 动态增强对象功能 |
| 代理 | Proxy | 间接访问与附加控制 |
| 外观 | Facade | 对外提供统一入口 |
| 桥接 | Bridge | 抽象与实现解耦 |
| 组合 | Composite | 树形结构统一处理 |
| 享元 | Flyweight | 共享对象节省内存 |
| 模式 | 英文名 | 核心作用 |
|---|---|---|
| 策略 | Strategy | 算法可替换 |
| 模板方法 | Template Method | 固定流程,扩展步骤 |
| 观察者 | Observer | 一对多通知 |
| 迭代器 | Iterator | 统一遍历集合 |
| 责任链 | Chain of Responsibility | 请求链式处理 |
| 命令 | Command | 请求封装成对象 |
| 备忘录 | Memento | 保存与恢复状态 |
| 状态 | State | 状态驱动行为变化 |
| 访问者 | Visitor | 结构稳定、操作可扩展 |
| 中介者 | Mediator | 集中对象交互逻辑 |
| 解释器 | Interpreter | 定义语法并解释执行 |
graph LR
A["T0 高频必学<br/>单例/工厂/建造者/策略/模板/代理/观察者/责任链"] --> B["T1 常用进阶<br/>适配器/装饰器/外观/状态/备忘录"]
B --> C["T2 面试加分<br/>原型/抽象工厂/桥接/组合/享元/迭代器/命令/中介者/访问者/解释器"]
为保证可复用和可复习,后续每个模式按统一结构输出:
设计模式的核心目标只有四个词:复用、解耦、扩展、可维护。
真正有价值的学习方式,不是记住 23 个名字,而是知道“这个场景该用哪一个,为什么用”。
下一篇:单例模式(Singleton) 👇
会覆盖:懒汉/饿汉、双重检查锁、静态内部类、枚举单例,以及并发与反射破坏问题。