Skip to content

设计原则与模式 ​

从变化来源和模块边界出发,学习怎样拆分关注点、设计可替换接口、用原则约束取舍,并在真实 Java/Spring 代码中选择合适的模式。

从哪里开始

按顺序读:先弄清 设计到底在设计什么,再用 关注点分离与可测试性 练习拆分边界;读懂成熟系统的设计、掌握封装组合多态与函数式手段之后,再看原则和模式。原则是判断取舍的尺子,模式是按问题查阅的工具箱。最后用 DDD 把边界放大到业务层面(完整的实践路线在 领域驱动设计专题),并在 通知路由案例 里把这些方法串起来走一遍。

设计模式决策图 之后有五篇按问题归类的深挖:对象创建、包装、可扩展流程、事件、状态机,遇到对应问题时再读;三个可复用的服务端组件 用限流、幂等键和渐进发布演示怎样从失败语义推导出设计。

文章 ​

01软件设计到底在设计什么设计的产物是模型、边界与演化规则;一个对象四处共用为什么会让变化扩散→02关注点分离与可测试性同一段下单逻辑拆分前后的测试对比:时间依赖、边界 bug 与四个难测信号→03读懂一个系统的设计先模型、再接口、最后实现:Spring 容器、Kafka Producer、JDK Stream 三个可运行的切片→04封装、组合与多态三种控制变化的手段;继承 HashSet 的计数错误,密封类型与穷举 switch 何时优于多态→05Java 里的函数式设计record 只是浅不可变、组合顺序即业务规则、Stream 副作用实测,以及函数式核心与命令式外壳→06API 设计与 DSL构造器、Builder、类型状态 Builder 的错误暴露时机;record 新增组件导致 NoSuchMethodError→07设计原则每条原则配一个可检查的判断标准和一个「不必遵守」的条件;IoC、DI 与 DIP 的区别→08里氏替换原则三个可检查的信号、为什么会建错,以及用组合替代继承→09设计模式决策图按四类工程问题选模式;八个高频模式的边界与代价,以及现代 Java 让哪些模式变轻→10对象创建与生命周期Builder 不保证合法、单例只在一个范围内唯一、复制前先决定身份;五组实测→11适配器、装饰器与代理都是包一层:错误翻译让重试失真、装饰顺序改变计量、自调用绕过代理→12策略、回调与责任链策略注册的重复与缺失、回调换线程丢上下文、责任链顺序与节点副作用→13观察者、事件与消息同步、异步、提交后与 Outbox 的失败语义;线程池满时数据与事件分叉→14状态机与工作流转换表的全矩阵检查、并发命令与版本号、状态与副作用一起提交→15从统一语言到限界上下文子域、限界上下文与防腐层;200 个请求抢 100 个名额,四种聚合写法实测→16通知路由服务的演化三次变化请求如何只靠新增完成,以及用影子比对迁移遗留系统→17可复用的服务端组件限流、幂等键、渐进发布:先写失败语义,再选模式;超发、接管与分桶实测→

相关专题 ​

文章以 CC BY-NC-SA 4.0 授权 · 代码片段以 MIT 授权