一、为什么需要设计模式
在 Java 项目中,随着业务复杂度上升,常见问题包括:
if-else / switch急剧膨胀- 类职责不清,修改一处牵一片
- 新需求只能'复制 + 魔改'
- 单元测试困难
- 代码'能跑但不敢动'
设计模式的本质不是语法技巧,而是'解耦变化'的经验总结。
一句话总结: 设计模式 = 封装变化 + 降低耦合 + 提高可扩展性
二、设计模式的理论基础(非常重要)
1. 面向对象六大原则(SOLID)
| 原则 | 含义 |
|---|---|
| SRP | 单一职责 |
| OCP | 对扩展开放,对修改关闭 |
| LSP | 里氏替换 |
| ISP | 接口隔离 |
| DIP | 依赖倒置 |
| 合成复用 | 少继承,多组合 |
设计模式 = SOLID 原则的具体实现形式
三、创建型模式(Creational Patterns)
关注点:对象如何创建,如何解耦'创建'与'使用'
1. 单例模式(Singleton)
1.1 业务场景
- 配置中心
- 全局缓存
- 线程池
- Spring 默认 Bean
1.2 双重检查锁(DCL)
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = ();
}
}
}
instance;
}
}


