设计模式:创建型(单例/工厂/建造者)
单例的线程安全写法、工厂解耦对象创建、建造者应对多参数构造,面试高频。
本节你将能
讲清三种创建型模式的意图、写法与面试追问点。
核心要点
- 单例:饿汉(类加载即建,简单但可能浪费)、懒汉(DCL+volatile 防指令重排)、静态内部类(推荐)、枚举(防反射/反序列化)。
- 工厂:简单工厂/工厂方法/抽象工厂,把「new 哪个类」的决策从调用方剥离。
- 建造者 Builder:链式设置多个可选参数,避免 Telescoping Constructor 与setter 不一致。
- 原型 Prototype:clone 复制对象,适合创建成本高、差异小的场景。
面试连招
常被追问:DCL 为什么需要 volatile?枚举单例为何最安全?Spring 用的是什么工厂?
常见坑
单例 DCL 漏写 volatile 导致拿到半初始化对象;把工厂写成巨大的 switch。