design-pattern
design-pattern/index.md
medium
design-pattern-index
设计模式索引 — 实战模式(Repository/Factory/Strategy/DDD/Pipeline/Assertion) + GoF 通用(SOLID/单例/建造者/代理/行为型) + 前端 React 组件模式。Use when 做结构性设计决策 / 评审抽象与分层 / 设计 React 组件 API 与逻辑复用时。
子项索引
| 子项 | 一句话 |
|---|---|
| repository folder | Repository |
| factory folder | Factory |
| strategy folder | Strategy |
| ddd-layering folder | DDD 分层 |
| pipeline folder | Pipeline |
| assertion folder | 断言式异常处理 — 失败立即抛 ApiException,业务代码线性直叙;4 个叶子下钻 |
| solid folder | SOLID 五大面向对象设计原则 — 单一职责 / 开闭 / 里氏替换 / 接口隔离 / 依赖倒置 |
| singleton folder | 单例模式 — 线程安全的几种 Java 实现及取舍(枚举 / 静态内部类 / 双重检查锁) |
| builder folder | 建造者模式 — 用链式 Builder 替代多参构造器/setter 拼装,配合 Lombok @Builder |
| proxy folder | 代理模式 — JDK 动态代理与 CGLIB 的区别及 Spring AOP 的选用规则 |
| behavioral folder | 常用行为型模式 — 模板方法 / 责任链 / 观察者 / 适配器 |
| react-patterns folder | React 组件设计模式(前端视角) — 复合组件 / 自定义 hook 抽逻辑 / render props headless / Provider context / 容器展示分离 |
Design Pattern · 设计模式
本层包含
| 名称 | 类型 | 一句话 |
|---|---|---|
| repository | 文件夹 | Repo 只做 CRUD,禁业务逻辑 |
| factory | 文件夹 | LLM provider 等多实现选择 |
| strategy | 文件夹 | 导出器 / 渲染策略可替换 |
| ddd-layering | 文件夹 | Controller 薄 / Service 编排 / Domain 纯 |
| pipeline | 文件夹 | 多步流程的 Step 方法命名 |
| assertion | 文件夹 | 断言式异常处理(Asserts 类 + ApiException + 边界 try/except) |
| solid | 文件夹 | SOLID 五原则 SRP/OCP/LSP/ISP/DIP(5 子项) |
| singleton | 文件夹 | 线程安全单例:枚举/静态内部类/DCL(1 子项) |
| builder | 文件夹 | 建造者 @Builder/链式(1 子项) |
| proxy | 文件夹 | JDK 动态代理 vs CGLIB / Spring AOP(1 子项) |
| behavioral | 文件夹 | 模板方法 / 责任链 / 观察者 / 适配器(4 子项) |
| react-patterns | 文件夹 | React 组件设计模式:复合组件 / Hook 抽逻辑 / Render Props / Provider / 容器展示分离 |
何时下钻
- 新增
backend/repositories/*.py/py/repositories/*.py→repository/ - 新增 LLM / OSS 多 provider 切换代码 →
factory/ - 写 PPT / 试卷 / PDF 导出代码 →
strategy/ - 设计新的 Service 层 →
ddd-layering/ - 写多步 LLM 编排(如 outline → slides → render)→
pipeline/
下钻决策表
| 任务 | 选哪个子项 |
|---|---|
| 写 PresentationService | ddd-layering + repository |
| 写 LLMProvider 抽象 | factory |
| 写 paper PDF 导出 | strategy |
| 写 outline_review 流式编排 | pipeline |