设计模式¶
以《Head First 设计模式》的读书笔记为基础,按创建型、结构型、行为型整理模式的用途、协作关系、设计原则和 Java 示例。阅读时先看要解决的问题,再比较不同模式如何分配职责。
备考复习可阅读设计模式分类、类图与考题解析:覆盖 23 种模式的关键词与角色、31 张本地配图、三道综合例题,以及常见易混模式辨析。
模式分类¶
| 分类 | 关注的问题 | 模式 |
|---|---|---|
| 创建型模式(5 种) | 对象由谁创建,如何选择具体实现或一组配套产品 | 工厂方法、抽象工厂、建造者、原型、单例 |
| 结构型模式(7 种) | 类与对象如何组合,怎样适配接口或扩展功能 | 装饰者、适配器、桥接、组合、外观、享元、代理 |
| 行为型模式(11 种) | 算法、状态、请求和处理步骤如何分配与协作 | 策略、命令、模板方法、状态、责任链、解释器、迭代器、中介者、备忘录、观察者、访问者 |
目录已覆盖 GoF 的 23 种设计模式。每篇都提供通用类结构与角色定义,并补充 Head First 具体示例、示例 UML 和协作过程;可通过示例索引逐一查看。简单工厂在工厂方法笔记中介绍,不单独计入这 23 种。
类结构图阅读说明¶
各篇的“类结构”使用通用角色名称,展示一种常见实现方式;已有原书案例图继续保留。角色定义表解释图中各个类或接口的职责。
| 图中符号 | 含义 |
|---|---|
<<interface>> / <<abstract>> |
接口 / 抽象类 |
Parent <\|-- Child |
继承,空心三角指向父类 |
Interface <\|.. Implementation |
接口实现,空心三角指向接口 |
A --> B |
A 持有或可以导航到 B 的引用 |
A ..> B |
A 使用或创建 B,表示依赖 |
Whole o-- Part |
聚合,菱形位于整体一侧;不要求部分与整体共用生命周期 |
+ / # / - |
公有 / 受保护 / 私有成员 |
成员末尾的 * / $ |
抽象方法 / 静态成员 |
0..1 / 0..* |
可选的一个对象 / 零到多个对象 |
为突出协作关系,部分具体类省略重复的接口方法。类图中的引用关系、参数及方法签名是结构示意,不代表完整可运行代码。
工厂模式阅读顺序¶
示例与原书章节¶
原书配套源码:bethrobson/Head-First-Design-Patterns,可结合各章节笔记阅读和运行书中的 Java 示例。
示例代码集中提供 23 种模式的 Head First 示例入口、Mermaid UML,以及已有可运行 Java 示例和历史代码片段。有配套源码的示例链接到作者 2020 年第二版代码;附录中只有场景描述的模式提供明确标注的教学建模。各篇保留对应章节或附录信息及来源。
参考资料¶
笔记来源¶
原始读书笔记迁自 head-first-design-patterns,保留完整 Git 历史和历史示例,并在此基础上继续按模式整理与补充。原有类图和状态图已改为内嵌 Mermaid,便于阅读和修改。新增示例会注明教学简化范围及原书配套源码来源。