跳转至

设计模式

以《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..* 可选的一个对象 / 零到多个对象

为突出协作关系,部分具体类省略重复的接口方法。类图中的引用关系、参数及方法签名是结构示意,不代表完整可运行代码。

工厂模式阅读顺序

  1. 从简单工厂与工厂方法理解披萨的创建与订购流程如何分开。
  2. 阅读抽象工厂,理解纽约、芝加哥原料工厂如何提供各自的产品族。
  3. 运行披萨示例,观察工厂方法创建披萨、抽象工厂提供原料的完整协作过程。

示例与原书章节

原书配套源码:bethrobson/Head-First-Design-Patterns,可结合各章节笔记阅读和运行书中的 Java 示例。

示例代码集中提供 23 种模式的 Head First 示例入口、Mermaid UML,以及已有可运行 Java 示例和历史代码片段。有配套源码的示例链接到作者 2020 年第二版代码;附录中只有场景描述的模式提供明确标注的教学建模。各篇保留对应章节或附录信息及来源。

参考资料

笔记来源

原始读书笔记迁自 head-first-design-patterns,保留完整 Git 历史和历史示例,并在此基础上继续按模式整理与补充。原有类图和状态图已改为内嵌 Mermaid,便于阅读和修改。新增示例会注明教学简化范围及原书配套源码来源。

评论