设计模式速查总览
2026/10/11大约 3 分钟
设计模式速查总览
一句话意图:把 GoF 23 种设计模式压缩成「意图 + 结构 + 代码 + 辨析」的速查卡,用于面试前快速回想、写代码时快速比对。
本区是速查,追求一眼看懂、能立刻回忆;完整推导、UML 类图与 Java 源码级剖析见「设计模式 · 详解」分组。两套内容一一对应,可对照阅读。
三大分类总表
| 分类 | 关注点 | 模式(本区速查) |
|---|---|---|
| 创建型 | 对象的创建方式,隐藏 new | 单例、简单工厂、工厂方法、抽象工厂、建造者、原型 |
| 结构型 | 类与对象的组合方式 | 外观、适配器、桥接、组合、装饰器、享元、代理 |
| 行为型 | 对象间的职责分配与通信 | 责任链、策略、模板方法、命令、观察者、访问者、状态、解释器、迭代器、中介者、备忘录 |
全部速查卡
| 模式 | 一句话意图 |
|---|---|
| 单例 | 保证全局只有一个实例并提供访问点 |
| 简单工厂 | 用一个工厂类按参数决定创建哪种产品 |
| 工厂方法 | 定义创建接口,交给子类决定实例化谁 |
| 抽象工厂 | 创建一族相关产品,无需指定具体类 |
| 建造者 | 分步构建复杂对象,隔离构建与表示 |
| 原型 | 通过复制现有对象来创建新对象 |
| 外观 | 为一组子系统提供统一的高层接口 |
| 适配器 | 转换接口,让不兼容的类能协作 |
| 桥接 | 分离抽象与实现,使二者独立变化 |
| 组合 | 树形结构下统一对待单个与组合对象 |
| 装饰器 | 动态地给对象叠加职责,比继承更灵活 |
| 享元 | 共享细粒度对象,降低大量对象的内存 |
| 代理 | 为对象提供替身以控制访问 |
| 责任链 | 请求沿处理器链传递,直到被处理 |
| 策略 | 封装可互换的算法家族 |
| 模板方法 | 父类定骨架,子类填步骤 |
| 命令 | 把请求封装成对象,支持撤销与排队 |
| 观察者 | 状态变化时通知所有依赖者 |
| 访问者 | 在不改元素类的前提下新增对元素的运算 |
| 状态 | 内部状态改变时改变对象行为 |
| 解释器 | 定义文法的表示并解释句子 |
| 迭代器 | 顺序访问聚合元素而不暴露内部结构 |
| 中介者 | 用中介对象封装一组对象的交互 |
| 备忘录 | 捕获并恢复对象的内部状态 |
学习路径
- 先懂原则:单一职责、开闭、里氏替换、依赖倒置、接口隔离、迪米特、合成复用,是模式背后的判断标准。
- 按创建 → 结构 → 行为推进:创建型解决「怎么造」,结构型解决「怎么搭」,行为型解决「怎么分工」。
- 成对辨析:工厂方法 vs 抽象工厂、策略 vs 状态、装饰器 vs 代理 vs 适配器、外观 vs 中介者,重点记「区别」一栏。
- 回看 JDK/框架:
Runtime、Collection.iterator()、InputStream装饰、SpringApplicationEvent、AOP 动态代理,都是活例子。
对照详解
每张速查卡末尾都给出对应详解篇的相对链接,例如单例详情见 创建型单例模式、工厂家族见 创建型工厂模式、全部模式总述见 设计模式概述 与 设计模式总结。
用法
面试前顺序翻一遍「一句话意图」列;写代码时按「适用场景」和「区别」两栏判断该不该上模式,避免为模式而模式。