GoF (Gang of Four) 创建模式将对实例过程抽象化。这些模式可帮助创建一个独立于所创建对象的系统。共有两种类型的创建模式:类创建模式和对象创建模式。类创建模式使用继承来改变被实例化的类。对象创建模式则对实例进行委托。
下表描述了各种 GoF 创建模式:
| 模式名称 | 处理的设计问题 | 角色 | 描述 |
|---|---|---|---|
| Abstract Factory | 以通用方式定义用来创建对象的接口,而不指定具体类。 | AbstractFactory | 定义用于创建抽象产品对象的公共接口 |
| ConcreteFactory | 定义用于创建具体产品对象的操作 | ||
| Abstract Product | 定义用于某一产品类型的公共接口。 | ||
| ConcreteProduct | 声明将由其相关具体工厂实例化的产品对象。定义 AbstractProduct 接口。 | ||
| 客户端 | 处理 AbstractFactory 和 AbstractProduct 对象。 | ||
| Builder | 将复杂对象的构建与其表示法分离,以使同一构建过程可以创建不同的表示法。 | Builder | 定义用于创建产品对象各个部分所需的操作。 |
| ConcreteBuilder | 实现在 Builder 接口中声明的操作 | ||
| Director | 通过 Builder 对象所公开的接口生成特定的产品。 | ||
| 产品 | Builder 对象创建的具体类型。 | ||
| Factory Method | 提供用于创建对象的接口。实现基本 Factory 接口的子类可以决定在运行环境中要创建的具体对象。 | 产品 | 定义客户端创建对象所使用的公共接口。 |
| Concrete Product | 实现在 Product 接口中声明的操作。 | ||
| Creator | 定义用于创建实现 Product 接口的对象的操作。 | ||
| ConcreteCreator | 实现在 Creator 接口中声明的操作 | ||
| Prototype | 它提供了一个接口,客户端可通过此接口,使用特定对象来处理复制该同一对象时的特定详细信息,从而生成一个完全相同的副本。 | Prototype | 它提供了一个一致的方法,可用来复制当前对象。 |
| ConcretePrototype | 实现在 Prototype 接口中声明的操作。 | ||
| 客户端 | 处理 Prototype 对象 | ||
| Singleton | 保证只实例化特定类类型的一个实例,同时为所有相关客户端提供对该实例的全局访问。 | Singleton | 定义一组操作,可允许客户端访问此类型的单个实例。 |