一句话总结
确保某个类在系统中只有一个实例,并提供一个全局可访问的入口。
问题与场景
- 某些资源需要“全局唯一”且共享(如配置中心、日志器、连接池管理器)。
- 创建成本较高,频繁 new 造成浪费或状态不一致。
- 需要在系统中统一访问该实例,避免多处重复初始化。
模式意图
保证一个类只有一个实例,并提供一个访问它的全局访问点,用于共享资源与统一行为。
结构图
大约 3 分钟
确保某个类在系统中只有一个实例,并提供一个全局可访问的入口。
保证一个类只有一个实例,并提供一个访问它的全局访问点,用于共享资源与统一行为。
通过“复制已有对象”来创建新对象,避免重复初始化,适合高成本或复杂配置的对象构建。
用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象,减少创建成本与重复逻辑。
提供创建“产品族”的统一入口,让具体工厂决定整套产品的实现,避免混用导致的不一致。
为创建一系列相关或相互依赖的对象提供一个接口,而无需指定它们的具体类,保证产品族的一致性。
把复杂对象的构建过程拆成稳定步骤,通过生成器逐步组装,既能复用流程又能产出不同配置。
将一个复杂对象的构建与其表示分离,使同样的构建过程可以创建不同的表示。
把“创建产品”的职责交给子类,通过工厂方法延迟具体对象的实例化,扩展时不改已有代码。
new。定义一个用于创建对象的接口/抽象方法,让子类决定实例化哪一个类,把对象创建延迟到子类。