SPEC for 01.java-and-jvm/04-patterns/
Inherits from: ../../SPEC.md Mode: append + override Updated: 2026-08-13
子目录定位
GoF 23 种设计模式的 Java 实战指南:创建型 / 结构型 / 行为型三大类,按 GoF 分类拆分,强调「何时用 vs 何时不用 + 现代语言特性替换」。
从 L1 继承
- G1-G6 通用 6 维度评分
- A1 源码级深度(带 JDK 版本)
- A3 反例对比(❌/✅)
- A2 版本演进对比(Java 8 Lambda/Stream 前后)
本子目录规则(强特异性)
评估维度(追加 L1 维度后)
| # | 维度 | 2 分 | 1 分 | 0 分 |
|---|---|---|---|---|
| P1 | 23 种 GoF 适用场景 | 每个模式给出「适用场景 + 不适用场景」对比 | 只有适用场景 | 只有定义和 UML |
| P2 | 反模式识别 | 有 ❌ 滥用案例 + 触发条件 | 有反模式但未说明触发 | 无反模式 |
| P3 | 现代语言特性替换 | 注明 Lambda / Stream / record / sealed 是否能替代 | 提及但无对比 | 完全忽略现代特性 |
写作要求
- UML/结构图必备:每个模式至少有 1 张类图(PlantUML 或 Mermaid)
- JDK 版本演进:注明模式适用的 JDK 版本(如 Observer 在 Java 9+ 已 deprecated)
- 相似模式对比:高频二选一必须并列对比(Factory Method vs Abstract Factory / Decorator vs Proxy / Strategy vs State)
- 现代替换清单:能用 Lambda / Stream 替代的模式必须标注「Java 8+ 优先用 Lambda」
- 代码可直接运行:示例代码必须有 main 方法或可独立编译运行
- GoF 三分类严格分离:创建型 / 结构型 / 行为型必须各自成目录,不混淆
互链要求
creation/README.md、structural/README.md、behavioral/README.md必须互链- 每个 split-hairs 迁出的模式(如
creation/singleton.md)必须回链本目录 README - 单例模式必须互链「Java 5+ 枚举实现」(split-hairs 视角)
- 装饰器 / 代理模式必须互链 Spring AOP(
04.spring-backend/)
反模式
- ❌ 罗列 23 种模式但不分场景
- ❌ 不区分 Java 7 vs Java 8+ 实现差异
- ❌ 把 Builder 模式写成链式 setter 而不说清「为什么需要 Director」
- ❌ 推荐单例 + 静态变量(已被 Spring 单例 Bean 替代)