设计模式系列目录
系列定位
这是一套面向业务开发、框架开发和架构重构的设计模式学习目录。
它回答的问题不是"单例模式定义是什么",而是:
- 为什么同一段业务代码改几次之后会变得越来越难维护
- 什么时候应该抽象,什么时候应该忍住
- GoF 设计模式和 MVC / MVVM 这类应用架构模式有什么区别
- 为什么同一个模式在 Java、Go、Rust、TypeScript 里长得不一样
- 代码评审时如何判断一个模式是必要设计还是过度设计
大纲目录
第一层:心智与基础
- 设计模式总览:模式不是背诵题,是变化管理工具
- UML 与代码结构图速通:类图、依赖、组合、聚合、时序图
- SOLID 原则:哪些有用,哪些容易被误解
- 组合优于继承:复用、扩展点与抽象层的真实代价
- 依赖倒置与依赖注入:从 new 到 IoC 容器
第二层:创建型模式
- 单例模式:全局唯一、生命周期与测试噩梦
- 工厂方法与抽象工厂:把创建逻辑从业务里拔出来
- 建造者模式:复杂对象、可读参数与不可变配置
- 原型模式:复制对象、快照与模板化创建
- 对象池与资源池:连接池、线程池与复用边界
第三层:结构型模式
- 适配器模式:旧接口、新接口与第三方 SDK 包装
- 装饰器模式:不改原类也能叠能力
- 代理模式:远程代理、缓存代理、权限代理与 AOP
- 外观模式:给复杂子系统一个稳定入口
- 组合模式:树形结构、菜单、文件系统与 UI 组件
- 桥接模式:两个维度独立变化时怎么拆
- 享元模式:大量小对象的内存优化
第四层:行为型模式
- 策略模式:消灭 if-else,但别制造类爆炸
- 模板方法模式:框架钩子、生命周期与反向控制
- 观察者模式:事件、订阅、响应式与内存泄漏
- 发布订阅模式:EventBus、消息队列与观察者的边界
- 命令模式:撤销、重做、队列化与操作日志
- 状态模式:把状态机从 if-else 里救出来
- 责任链模式:中间件、过滤器、审批流与错误传播
- 迭代器模式:遍历协议、惰性序列与流式处理
- 访问者模式:AST、编译器 Pass 与表达式问题
- 解释器模式:DSL、小语言与规则引擎的边界
第五层:应用架构模式
- MVC:Model、View、Controller 到底分什么
- MVP:Presenter 为什么适合测试,又为什么少见了
- MVVM:ViewModel、数据绑定与响应式 UI
- 分层架构:Controller / Service / Repository 的边界
- 六边形架构:端口、适配器与业务核心保护
- Clean Architecture:用例层、实体层与依赖规则
- DDD 战术模式:Entity、Value Object、Aggregate、Repository
- CQRS:读写模型分离,不是所有系统都需要
- 事件驱动架构:领域事件、集成事件与最终一致性
- 微服务模式:服务拆分、Saga、API Gateway 与反腐层
第六层:前端与客户端模式
- 组件模式:Props、Slots、Composition 与复用边界
- 单向数据流:Flux / Redux / Elm 架构的核心约束
- 响应式模式:Observable、Signals、Computed 与副作用
- 状态管理模式:本地状态、服务端状态、全局状态怎么分
- 容器组件与展示组件:什么时候有用,什么时候过时
- Hooks / Composable 模式:逻辑复用的新默认
- 路由与页面模式:嵌套路由、布局、加载器与守卫
- 微前端模式:模块联邦、沙箱、路由隔离与组织边界
第七层:工程判断与反模式
- 重构到模式:从坏味道开始,不要从模式开始
- 常见反模式:上帝对象、贫血模型、过度抽象、回调地狱
- 模式与语言特性:Java、Go、Rust、TypeScript 写法为什么不同
- 模式选型清单:需求变化点、团队能力、测试成本与性能约束
- 设计模式面试与真实代码评审:怎么讲清取舍,不背模板
最小阅读路径
只想理解 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