从模式到思维
走完十章的旅程,你已经认识了 23 种经典设计模式、5 大 SOLID 原则、前端实战模式和架构模式。但课程的终点不是”你能背出多少种模式”,而是”你的设计思维是否发生了质变”。
回望来路
让我们快速回顾这趟旅程的脉络:
入门篇,我们建立了基础认知。第 1 章理解了设计模式的由来、SOLID 原则和 UML 类图。第 2-3 章学习了五种创建型模式——单例、工厂方法、抽象工厂、建造者、原型——它们解决的是”对象从哪来”的问题。
进阶篇,我们深入了模式的核心地带。第 4-5 章学习了七种结构型模式——适配器、装饰器、代理、外观、桥接、组合、享元——它们解决的是”对象怎么组合”的问题。第 6-7 章学习了十种行为型模式——观察者、策略、模板方法、迭代器、责任链、命令、状态、中介者、备忘录、访问者——它们解决的是”对象怎么协作”的问题(第 7 章还补充介绍了解释器模式的概念与适用场景)。
实战篇,我们把模式拉到了真实的前端战场。第 8 章用发布-订阅、中间件、插件架构、依赖注入四种前端高频模式打通了”理论到落地”的最后一公里。第 9 章把视野拉到架构层面,看了 MVC/MVVM、微服务模式,也学会了识别反模式。
精通篇,第 10 章是最重要的一章——它不教模式,而是教判断力。何时该用、何时不该用、如何识别过度设计、现代语言特性如何影响模式的实现。
模式之上的三层思维
学完所有模式之后,真正的成长发生在三个层次:
第一层:模式识别能力
你在阅读别人的代码时,能一眼看出”这里用的是策略模式”、“这个 Middleware 链是责任链模式”。这种识别能力让你读代码的速度翻倍——你不再需要逐行推导,因为你已经知道这个结构的意图和行为。
同样,在面试中、在代码评审中,模式识别能力让你能用准确的术语描述设计决策,和团队高效沟通。
第二层:问题归类能力
这一层比识别模式更重要。当你面对一个具体的设计难题时,你能迅速判断它属于哪一类问题:
- 创建过程太复杂?→ 创建型模式的领域
- 接口不兼容、结构需要调整?→ 结构型模式的领域
- 对象之间的协作方式需要优化?→ 行为型模式的领域
- 系统层面的组织方式有问题?→ 架构模式的领域
你可能最终不用任何模式就解决了问题,但这种”归类本能”让你在面对复杂问题时不再慌张——你知道该从哪个方向思考。
第三层:权衡决策能力
这是最高的一层,也是这门课真正想教给你的。
每一种设计决策都是一种权衡(Trade-off):
- 灵活性 vs 简洁性——模式带来灵活性,但也增加了间接层。
- 可扩展性 vs 当前速度——为未来预留扩展点需要额外的抽象,但当下的需求可能不需要。
- 正确性 vs 实用性——理论上最”正确”的设计,在实际项目约束下可能不是最好的选择。
优秀的工程师不是选择”最正确”的方案,而是选择”当前最合适”的方案。 “合适”取决于:项目的生命周期(原型还是长期维护)、团队的水平(只有你能看懂的代码不是好代码)、业务的变化速度(变化快的模块需要更灵活的设计)。
几条带得走的原则
这十章的内容很多,但如果要浓缩成几句话带走,我希望是这些:
原则一:代码是写给人看的,顺便让机器执行。
所有设计模式的最终目的都是让代码更容易被人理解和维护。如果一个模式的引入让代码变得更难读了,那就是用错了。
原则二:从简单开始,按需演进。
不要在第一天就把架构设计到”能支撑百万用户”的程度。先用最简单的方式让它跑起来,然后在真实的需求压力下逐步演进。每一次重构都应该有具体的痛点驱动,而不是”我觉得将来可能需要”。
原则三:组合优于继承。
在几乎所有场景下,通过组合(持有一个对象的引用)比通过继承(extends)更灵活、更安全。继承是一种极强的耦合关系——子类和父类之间的契约一旦建立就很难打破。
原则四:面向接口编程,而非面向实现。
依赖抽象接口而不是具体类,这是 SOLID 的精髓,也是几乎所有设计模式的共同基础。在 TypeScript 中,接口的成本是零(编译后消失),所以没有理由不用。
原则五:好的设计是删出来的,不是加出来的。
当你犹豫要不要加一层抽象时,先问自己:不加会怎样?如果不加也能正常工作,而且在可预见的未来也不会有问题,那就不加。好设计的标志是”删不掉任何东西”,而不是”加了很多东西”。
下一步去哪里
课程结束了,但学习不会停止。以下是一些推荐的进阶方向:
读源码。现在你有了模式识别的”眼睛”,去读优秀开源项目的源码会事半功倍。推荐从这些项目开始:
- Vue 3 的响应式系统(
@vue/reactivity)——观察者模式、代理模式的精彩演示 - Koa 的中间件引擎——用不到 100 行代码实现了洋葱圈模型
- VS Code 的插件系统——大规模插件架构的工业级实践
- RxJS——观察者、迭代器、策略的高级组合
写一个自己的框架或工具。哪怕是一个简单的状态管理库、一个 CLI 工具、一个表单验证库。在从零构建的过程中,你会自然地遇到需要设计模式的场景,这比刷题有效得多。
做代码评审。帮别人 review 代码是提升设计能力的捷径。你会在别人的代码中看到各种问题(可能也会看到你自己从前犯过的错误),这种”从旁观者视角审视设计决策”的练习非常宝贵。
最后的话
设计模式不是终点,而是一门语言。
就像学会了英语的语法和词汇之后,你才刚刚获得了”用英语思考”的能力。同样,学会了 23 种设计模式之后,你才刚刚获得了”用设计思维看待代码”的能力。
真正的功力,是在日复一日的编码实践中慢慢打磨出来的。每写一行代码,每做一个设计决策,每一次权衡取舍,都在塑造你作为工程师的”审美”。这种审美——什么是好代码、什么是合理的抽象、什么是恰到好处的灵活性——是无法速成的,但一旦形成,会让你受益整个职业生涯。
从模式到思维,从思维到直觉,从直觉到自然。这才是”精通”的真正含义。
祝你在代码的世界里,越走越远,越写越好。
购买课程解锁全部内容
写出优雅代码:10 章掌握 23 种设计模式
¥29.90