1. "设计模式"是什么?别被名字吓到

🏗️ 类比——装修模板:
装修房子:有人总结出"北欧风、简约风、日式风"等成熟模板——不用每次从零发明。
设计模式 = 程序员几十年来总结的代码结构模板——遇到"这种问题"就用"这个套路"。

设计模式:针对"反复出现的代码设计问题"的成熟解决方案。不是代码库,是"套路/思想"。

为什么学:

🎯 记住

  • 模式 = 解决特定问题的"套路模板",共 23 种(GoF 经典)
  • 不要为了用模式而用模式——先有问题,再套模式
  • 你其实已经在用:new 线程池(工厂)、Runtime.getRuntime()(单例)、Comparator(策略)

2. 23 种模式分三类:创建型/结构型/行为型

分类 解决什么问题 代表模式
创建型(5 种)对象怎么"造"更好(控制创建过程)单例、工厂、建造者
结构型(7 种)类和对象怎么"拼"更好(组合关系)代理、装饰器、适配器
行为型(11 种)对象之间怎么"协作"更好(交互方式)观察者、策略、模板方法
🧩 记忆类比:
创建型 = 怎么生孩子(工厂=代孕公司,单例=独生子)
结构型 = 怎么搭乐高(代理=替身演员,装饰器=给房子加装修)
行为型 = 人与人怎么配合(观察者=订阅公众号,策略=换轮胎方式)

🎯 面试优先级

  • 必背:单例、工厂、代理、观察者、策略、模板方法、装饰器
  • 会区分:适配器 vs 外观、代理 vs 装饰器、策略 vs 状态(对比是常考题)

3. 最常用的 5 个模式(先学这 5 个就够用)

单例模式(最常考)
public class ConfigManager {
    private static final ConfigManager INSTANCE = new ConfigManager();

    private ConfigManager() {}                  // 构造私有:外面不能 new

    public static ConfigManager getInstance() {  // 唯一的获取入口
        return INSTANCE;
    }
}
// 用法:ConfigManager.getInstance() —— 永远拿到同一个对象
// 好处:配置只加载一次、全局共享

🎯 学完这 5 个再看

4. 设计模式学习建议(别死记)

🎯 常见误区

  • 误区 1:"模式越多越好"——过度设计比不用更糟(简单代码最宝贵)
  • 误区 2:"背下 23 个名字就懂设计模式"——面试官问的是"这个场景用什么模式、为什么"
  • 误区 3:"模式是 Java 专属"——所有面向对象语言通用(C++/Python 一样)

🎤 常见面试追问

  1. 设计模式是什么?为什么需要它?——解决特定问题的成熟代码套路(23 种 GoF)。价值:面试必考、读懂框架源码(Spring 全是模式)、写出易维护代码。
  2. 先背模式还是先写代码?——先会写代码,遇到"重复出现的问题"再套模式——模式是经验的总结,不是起点。
  3. 你项目里用过哪些模式?——典型回答:单例(配置类/工具类)、工厂(Spring 容器)、代理(AOP 日志/事务)、策略(支付/通知渠道)、模板方法(消息处理骨架)。

📖 名词解释(本页术语)

术语 大白话解释
设计模式程序员总结的"代码结构模板":遇到这类问题就用这个套路,共 23 种(GoF 经典)。
GoFGang of Four(四人组):《设计模式》一书作者,定义了 23 种经典模式。
创建型 / 结构型 / 行为型模式三大分类:对象怎么造 / 怎么拼 / 怎么协作。
耦合 / 解耦耦合 = 代码之间互相依赖的程度;解耦 = 降低依赖(改一处不影响别处)——模式的核心目的。
复用同一份代码多处使用——模式让复用在"结构层面"实现(不只是复制粘贴)。
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。