Skip to content

设计模式系列目录

系列定位

这是一套面向业务开发、框架开发和架构重构的设计模式学习目录。

它回答的问题不是"单例模式定义是什么",而是:

  • 为什么同一段业务代码改几次之后会变得越来越难维护
  • 什么时候应该抽象,什么时候应该忍住
  • GoF 设计模式和 MVC / MVVM 这类应用架构模式有什么区别
  • 为什么同一个模式在 Java、Go、Rust、TypeScript 里长得不一样
  • 代码评审时如何判断一个模式是必要设计还是过度设计

大纲目录

第一层:心智与基础

  1. 设计模式总览:模式不是背诵题,是变化管理工具
  2. UML 与代码结构图速通:类图、依赖、组合、聚合、时序图
  3. SOLID 原则:哪些有用,哪些容易被误解
  4. 组合优于继承:复用、扩展点与抽象层的真实代价
  5. 依赖倒置与依赖注入:从 new 到 IoC 容器

第二层:创建型模式

  1. 单例模式:全局唯一、生命周期与测试噩梦
  2. 工厂方法与抽象工厂:把创建逻辑从业务里拔出来
  3. 建造者模式:复杂对象、可读参数与不可变配置
  4. 原型模式:复制对象、快照与模板化创建
  5. 对象池与资源池:连接池、线程池与复用边界

第三层:结构型模式

  1. 适配器模式:旧接口、新接口与第三方 SDK 包装
  2. 装饰器模式:不改原类也能叠能力
  3. 代理模式:远程代理、缓存代理、权限代理与 AOP
  4. 外观模式:给复杂子系统一个稳定入口
  5. 组合模式:树形结构、菜单、文件系统与 UI 组件
  6. 桥接模式:两个维度独立变化时怎么拆
  7. 享元模式:大量小对象的内存优化

第四层:行为型模式

  1. 策略模式:消灭 if-else,但别制造类爆炸
  2. 模板方法模式:框架钩子、生命周期与反向控制
  3. 观察者模式:事件、订阅、响应式与内存泄漏
  4. 发布订阅模式:EventBus、消息队列与观察者的边界
  5. 命令模式:撤销、重做、队列化与操作日志
  6. 状态模式:把状态机从 if-else 里救出来
  7. 责任链模式:中间件、过滤器、审批流与错误传播
  8. 迭代器模式:遍历协议、惰性序列与流式处理
  9. 访问者模式:AST、编译器 Pass 与表达式问题
  10. 解释器模式:DSL、小语言与规则引擎的边界

第五层:应用架构模式

  1. MVC:Model、View、Controller 到底分什么
  2. MVP:Presenter 为什么适合测试,又为什么少见了
  3. MVVM:ViewModel、数据绑定与响应式 UI
  4. 分层架构:Controller / Service / Repository 的边界
  5. 六边形架构:端口、适配器与业务核心保护
  6. Clean Architecture:用例层、实体层与依赖规则
  7. DDD 战术模式:Entity、Value Object、Aggregate、Repository
  8. CQRS:读写模型分离,不是所有系统都需要
  9. 事件驱动架构:领域事件、集成事件与最终一致性
  10. 微服务模式:服务拆分、Saga、API Gateway 与反腐层

第六层:前端与客户端模式

  1. 组件模式:Props、Slots、Composition 与复用边界
  2. 单向数据流:Flux / Redux / Elm 架构的核心约束
  3. 响应式模式:Observable、Signals、Computed 与副作用
  4. 状态管理模式:本地状态、服务端状态、全局状态怎么分
  5. 容器组件与展示组件:什么时候有用,什么时候过时
  6. Hooks / Composable 模式:逻辑复用的新默认
  7. 路由与页面模式:嵌套路由、布局、加载器与守卫
  8. 微前端模式:模块联邦、沙箱、路由隔离与组织边界

第七层:工程判断与反模式

  1. 重构到模式:从坏味道开始,不要从模式开始
  2. 常见反模式:上帝对象、贫血模型、过度抽象、回调地狱
  3. 模式与语言特性:Java、Go、Rust、TypeScript 写法为什么不同
  4. 模式选型清单:需求变化点、团队能力、测试成本与性能约束
  5. 设计模式面试与真实代码评审:怎么讲清取舍,不背模板

最小阅读路径

只想理解 MVC / MVVM 和业务代码分层:

text
01 -> 03 -> 04 -> 05 -> 18 -> 20 -> 28 -> 29 -> 30 -> 31 -> 32 -> 38 -> 39 -> 41

想系统补 GoF 模式:

text
01 -> 02 -> 03 -> 06-27 -> 46 -> 48 -> 49

最后更新: