一、设计模式总览:什么是设计模式、GoF 23种设计模式分类、为什么学习设计模式、本课程学习路线图

1.1 什么是设计模式?——说白了就是“套路”

设计模式这个词,听起来挺高大上的。但说白了,它就是前辈们在长期编码中总结出来的“套路”。

我刚开始写代码那会儿,遇到重复的问题就硬写。后来发现,很多场景下,别人的解法比我优雅得多。设计模式就是这些“优雅解法”的集合。

官方定义是:设计模式是针对特定场景下常见问题的、可复用的解决方案。它不是一个可以直接拷贝的代码片段,而是一套设计思路。

核心要点:

  • 设计模式不是框架,不是库,是思想
  • 它解决的是“如何组织代码”的问题,不是“如何实现功能”
  • 好的设计模式让代码更易读、易改、易扩展

举个例子。你想想看,每次写日志的时候,你是不是只希望有一个日志对象?如果到处 new 一个日志实例,那日志文件就乱套了。这时候,单例模式就派上用场了。我在项目中遇到过好几次因为没控制好实例数量导致的资源冲突,后来统一用单例,问题就解决了。

1.2 GoF 23种设计模式分类

1994年,四位作者(GoF,Gang of Four)出版了《设计模式》这本书。他们总结了23种模式,按目的分为三大类:

分类 目的 包含模式
创建型 控制对象的创建过程 单例、工厂方法、抽象工厂、建造者、原型
结构型 组合类或对象以形成更大的结构 适配器、桥接、组合、装饰、外观、享元、代理
行为型 定义对象间的交互与职责分配 责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者

我个人习惯把这23种模式记成三组:怎么创建对象、怎么搭结构、怎么通信协作。你想想看,软件开发中遇到的大部分问题,基本都能归到这三类里。

小技巧: 不要试图一次性记住所有模式。我建议你先掌握最常用的5-6个:单例、工厂、观察者、策略、装饰、适配器。剩下的遇到具体场景再查就行。

1.3 为什么学习设计模式?

这个问题我问过自己很多次。说实话,刚入行那两年,我觉得设计模式就是花架子。直到有一次,我接手了一个遗留系统——代码里到处都是 if-else,一个类几千行,改一个功能要动十几个文件。那感觉,就像在雷区里走路。

后来我重构了那个系统,用工厂模式替换了散落的创建逻辑,用观察者模式解耦了事件处理,用策略模式替代了冗长的条件分支。代码量减少了40%,可读性提升了一个档次。

所以,学习设计模式的理由其实很实在:

  • 提升代码质量:减少重复代码,提高内聚性,降低耦合度
  • 提高沟通效率:你说“这里用观察者模式”,大家秒懂,不用解释半天
  • 降低维护成本:好的设计模式让修改变得安全,不会牵一发动全身
  • 面试加分项:这个不用我多说,你懂的

避坑指南: 我曾经见过有人为了用设计模式而用设计模式,一个简单的功能硬套了三个模式,结果代码比原来还复杂。记住:设计模式是工具,不是目的。不要为了用模式而用模式。

1.4 本课程学习路线图

这门课我们聚焦三个最核心、最实用的模式:单例模式、工厂模式、观察者模式。为什么选这三个?

  • 单例模式:最基础,几乎每个系统都会用到。理解它,你就理解了“全局唯一”的设计思想。
  • 工厂模式:最实用,帮你解决“谁来创建对象”的问题。我几乎在每个项目中都用它。
  • 观察者模式:最经典,事件驱动架构的基石。前端、后端、移动端,无处不在。

下面是本章的知识体系图,帮你快速建立整体认知:

设计模式学习路线图 设计模式总览 创建型模式 结构型模式 行为型模式 单例模式 工厂模式 观察者模式 理解原理 掌握核心概念与适用场景 动手实践 编写代码示例与单元测试 项目应用 在真实项目中灵活运用 从理论到实践,逐步掌握三大核心模式

嗯,这张图基本概括了我们的学习路径。先建立整体认知,再深入每个模式。每个模式我都会从定义、结构、适用场景、代码实现、优缺点五个维度来讲。

我个人建议你按照这个顺序来学:单例 → 工厂 → 观察者。因为单例最简单,工厂帮你理解“创建”的抽象,观察者则涉及对象间的通信。循序渐进,效果最好。

学习建议: 每学完一个模式,立刻写一个最小可运行的示例。不要只看不练。我见过太多人“看懂了”但写不出来。代码这东西,手熟了才是自己的。

好了,设计模式总览就讲到这里。接下来我们进入第一个模式——单例模式。我会从最基础的实现讲起,然后逐步深入到线程安全、性能优化等进阶话题。


公众号:蓝海资料掘金营,微信deep3321