总览见 设计模式概述 · 面试速查见 设计模式面试题 14 道。
创建型模式关注对象的创建过程:如何隐藏 new、如何解耦创建与使用、如何保证实例唯一或高效复制。
GoF 共 5 种:单例、工厂方法、抽象工厂、建造者、原型。

单例模式
保证全局唯一实例 + 统一访问点。
常用写法:
// 静态内部类(推荐:懒加载 + 线程安全)public class Singleton { private Singleton() {} private static class Holder { static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return Holder.INSTANCE; }}
// 枚举(防反射/反序列化,无懒加载)public enum SingletonEnum { INSTANCE;}选型:不需懒加载 → 枚举或饿汉式;需懒加载 → 静态内部类优于懒汉式。
注意:反射可破坏普通单例;DCL 需 volatile;连接池等不宜无脑单例。
Spring:默认 singleton Bean 为单例管理(容器级,非 GoF 严格单例)。
工厂模式
| 类型 | 扩展性 | 典型场景 |
|---|---|---|
| 简单工厂 | 改工厂 if-else | 少量产品 |
| 工厂方法 | 新增产品 = 新增工厂 | 产品族扩展 |
| 抽象工厂 | 新增产品族 | 多系列产品配套 |
Spring IOC:容器根据 BeanDefinition 反射创建对象,注册到单例 Map,本质是工厂 + 单例,解决业务类之间 new 导致的强耦合。
建造者模式
复杂对象分步构建:Builder 定义步骤 → ConcreteBuilder 实现 → Director 编排 → Product 结果。
与工厂区别:建造者关心装配顺序与步骤,工厂关心创建哪种具体类型。
StringBuilder.append() 是典型建造者用法。
原型模式
通过 clone() 复制对象,避免重复执行昂贵构造/初始化。
| 拷贝 | 说明 |
|---|---|
| 浅拷贝 | 基本类型复制,引用类型共享 |
| 深拷贝 | 引用类型递归 clone 或序列化 |
Spring:prototype 作用域每次从容器取新实例,思想接近原型。
创建型模式一览
| 模式 | 一句话 |
|---|---|
| 单例 | 全局唯一实例 |
| 工厂方法 | 子类决定创建哪种产品 |
| 抽象工厂 | 创建一族配套产品 |
| 建造者 | 分步组装复杂对象 |
| 原型 | 克隆已有实例 |