Skip to content

Java 设计模式概述

设计模式不是“背八股”📚,而是工程实践里反复验证过的设计经验。
SpringMyBatisJDK 源码中,设计模式几乎无处不在。


1. 设计模式是什么

设计模式是针对常见软件设计问题的一套通用解法。
GoF(四人帮)经典设计模式共 23 种,分为三大类:

  • 🏗️ 创建型(5):解决对象怎么创建
  • 🧩 结构型(7):解决类和对象怎么组合
  • 🔄 行为型(11):解决对象之间怎么协作

2. 23 种模式总览

2.1 创建型模式(5)

模式英文名核心作用
单例模式Singleton保证一个类只有一个实例
工厂方法Factory Method把对象创建延迟到子类
抽象工厂Abstract Factory创建一族相关对象
建造者Builder复杂对象分步骤创建
原型模式Prototype通过拷贝快速创建对象

2.2 结构型模式(7)

模式英文名核心作用
适配器Adapter兼容不一致接口
装饰器Decorator动态增强对象功能
代理Proxy间接访问与附加控制
外观Facade对外提供统一入口
桥接Bridge抽象与实现解耦
组合Composite树形结构统一处理
享元Flyweight共享对象节省内存

2.3 行为型模式(11)

模式英文名核心作用
策略Strategy算法可替换
模板方法Template Method固定流程,扩展步骤
观察者Observer一对多通知
迭代器Iterator统一遍历集合
责任链Chain of Responsibility请求链式处理
命令Command请求封装成对象
备忘录Memento保存与恢复状态
状态State状态驱动行为变化
访问者Visitor结构稳定、操作可扩展
中介者Mediator集中对象交互逻辑
解释器Interpreter定义语法并解释执行

3. 学习路线图

graph LR
    A["T0 高频必学<br/>单例/工厂/建造者/策略/模板/代理/观察者/责任链"] --> B["T1 常用进阶<br/>适配器/装饰器/外观/状态/备忘录"]
    B --> C["T2 面试加分<br/>原型/抽象工厂/桥接/组合/享元/迭代器/命令/中介者/访问者/解释器"]

4. 优先级建议

  • 🚀 T0(先学):单例、工厂、建造者、策略、模板方法、代理、观察者、责任链
  • 🔧 T1(进阶):适配器、装饰器、外观、状态、备忘录
  • 🎯 T2(加分):原型、抽象工厂、桥接、组合、享元、迭代器、命令、中介者、访问者、解释器

5. 每篇笔记统一模板

为保证可复用和可复习,后续每个模式按统一结构输出:

  1. 模式定义:一句话讲清本质
  2. 适用场景:真实业务案例
  3. Java 实现:可直接运行的示例代码
  4. 优缺点:何时用、何时别用
  5. 源码映射:JDK / Spring 对应应用点
  6. 面试考点:高频问法与回答框架

6. 常见误区

  • ❌ 只背定义,不写代码
  • ❌ 见到问题就“硬套模式”
  • ❌ 忽略业务上下文,过度设计
  • ✅ 正确做法:先解决问题,再总结是否可抽象为模式

7. 开篇总结

设计模式的核心目标只有四个词:复用、解耦、扩展、可维护
真正有价值的学习方式,不是记住 23 个名字,而是知道“这个场景该用哪一个,为什么用”。


8. 下篇预告

下一篇:单例模式(Singleton) 👇
会覆盖:懒汉/饿汉、双重检查锁、静态内部类、枚举单例,以及并发与反射破坏问题。