创建型设计模式(Creational Design Patterns)是 设计模式 中的一类,专注于如何实例化对象或类。它们提供了一些优雅的方式来创建对象,允许程序在对象创建过程中更灵活地进行管理,从而提高系统的扩展性和维护性。
创建型设计模式的主要目的是解耦对象的创建与使用,从而使得系统在面对变化时更加灵活。它们通过不同的方式来控制对象的创建过程,允许客户端代码以不同的方式来实例化对象。
设计模式 | 目标 | 关键特点 | 应用场景 | 代码示例 |
---|---|---|---|---|
单例模式(Singlenton Pattern) | 确保一个类只有一个实例,并提供全局访问 | - 唯一实例 - 全局访问点 | 适用于全局共享资源,如配置文件、日志记录等 | 通过 __new__ 重写确保唯一实例 |
工厂方法模式(Factory Method Parttern) | 通过工厂方法创建对象,推迟对象创建到子类 | - 定义工厂方法 - 子类负责创建实例 | 适用于产品类型较多且需要多种创建方式的场景 | 通过抽象工厂方法,子类负责具体创建不同产品 |
抽象工厂模式(Abstract Factory Parttern) | 提供一系列相关或相互依赖的对象创建接口 | - 多个产品族 - 客户端无需知道具体类 | 适用于产品族相关且需要灵活扩展的场景 | 定义抽象工厂接口,不同子类实现不同产品族的创建 |
建造者模式(Builder Parttern) | 通过多步骤构建一个复杂的对象 | - 分步骤构建对象 - 与表示分离 | 适用于复杂对象的构建,如游戏、图形编辑器 | 通过建造者模式逐步构建复杂对象,各个部分按需组装 |
原型模式(Prototype Parttern) | 通过克隆现有实例创建新对象 | - 对象复制 - 克隆现有实例 | 适用于对象创建开销较大的情况,如复杂对象 | 通过 clone() 方法克隆现有对象来创建新对象 |
解释
-
单例模式:当一个类的实例需要全局共享时,使用单例模式来确保在整个应用程序中只有一个实例,并且提供全局访问点。这通常用于配置管理、数据库连接、日志记录等场景。
-
工厂方法模式:当你需要创建一个类的多个不同实例,而这些实例的创建过程具有差异时,可以使用工厂方法模式。该模式通过工厂方法延迟创建实例,子类负责具体的实例化逻辑,客户端代码不关心具体的实例化细节。
-
抽象工厂模式:用于创建一系列相关的产品对象,每个产品族中的产品之间存在关联。适用于需要跨平台或跨操作系统创建对象的场景,例如 UI 框架中为不同平台提供不同样式的按钮、文本框等。
-
建造者模式:当一个对象需要经过多个步骤才能创建出来,且对象的部分或外观可变时,使用建造者模式。适用于产品构建过程中有多个步骤,且每个步骤的执行顺序可能不同的场景,如复杂的游戏角色创建或复杂文档的生成。
-
原型模式:当创建对象的过程开销较大(例如初始化复杂对象时),我们可以通过原型模式克隆现有对象,避免重复的构建过程。适用于大规模对象复制、对象缓存等场景。