这组笔记用 Java 学习设计模式,按设计原则、创建型模式、结构型模式、行为型模式四章展开。示例围绕订单处理、文件读写、通知、编辑器等普通 Java 场景,重点是需求变化时如何安排类的职责、创建对象和组织协作。
| 章节 | 学习内容 | 需要掌握的 Java 基础 |
|---|---|---|
| 设计原则 | SOLID、迪米特法则、组合与继承 | 接口、抽象类、多态、构造函数 |
| 创建型模式 | 单例、工厂家族、建造者、原型 | static、类初始化、synchronized、volatile、对象拷贝 |
| 结构型模式 | 适配器、装饰器、代理、外观、桥接、组合、享元 | 委托、反射、泛型、集合、I/O |
| 行为型模式 | 观察者、策略、模板方法、责任链、命令、状态、迭代器、备忘录、中介者 | Lambda、函数式接口、集合遍历、异常、线程池 |
示例的运行方式
示例以 JDK 17 或更高版本为基准,只使用 JDK 自带 API。每个 java 代码块都是独立示例,保存为 Demo.java 即可运行;不同代码块中的同名类分别属于各自的示例。辅助类型放在 Demo 内部,是为了便于复制运行,实际项目可以按职责拆成独立文件。
javac -encoding UTF-8 --release 17 Demo.java
java Demorecord 用来表达简单的数据载体;它只保证字段引用不可重新赋值,字段指向的集合或对象仍可能可变。List.of()、List.copyOf() 返回不可修改的列表,但也不会自动深拷贝列表元素。涉及深浅拷贝时会专门讨论这个区别。
建议的学习方式
先阅读设计原则,再按四章顺序学习。每遇到一个模式,先运行示例,观察调用者依赖了谁,然后尝试改变一项需求:新增支付方式、更换输出渠道、增加校验步骤,或者撤销一次操作。需要修改哪些类,比能否背出类图更能说明你是否理解了模式。
章节中的 JDK 对照用于阅读真实 API。例如,I/O 包装流帮助理解装饰器,Comparator 帮助理解策略,Iterator 帮助理解遍历协议。某个 API 可以同时使用多种模式,判断时应看具体对象关系与调用过程。
每个主要模式先用关系图、流程图或时序图说明,再给出带中文注释的代码。先把图中的角色对应到代码里的类、接口和字段,再沿一次实际调用追踪执行顺序。 注释重点解释职责、委托、状态保存与失败路径,Java 语法之外的边界在正文中继续展开。
图示直接使用正文里的 Mermaid 代码,站点将它们渲染为可放大的 SVG。关系图说明谁依赖谁,流程图说明分支和步骤,时序图说明调用与返回,状态图只列出允许的转换。
原来的 Kotlin 与 Android 版设计模式 仍可单独阅读。