抽象工厂模式(abstract factory)

意图

提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

别名

Kit

适用性

  1. 一个系统要独立于它的产品的创建、组合和表示时。
  2. 一个系统要由多个产品系列中的一个来配置时。
  3. 当你要强调一系列相关的产品对象的设计以便进行联合使用时。
  4. 当你提供一个产品类库,而只想显示它们的接口而不是实现时。

参与者

  1. AbstractFactory ----声明一个创建抽象产品对象的操作接口
  2. ConcreteFactory ----实现创建具体产品对象的操作
  3. AbstractProduct ----为一类产品对象声明一个接口
  4. ConcreteProduct ----定义一个将被相应的具体工程创建的产品对象。----实现AbstractProduct接口
  5. Client ----仅使用由AbstractFactory和AbstractProduct类声明的接口

协作

  1. 通常在运行时刻创建一个ConcreteFactory类的实例。
  2. AbstractFactory将产品对象的创建延迟到它的ConcreteFactory子类。

效果(优缺点)

  1. 它分离了具体的类
  2. 它使得易于交换产品系列
  3. 它有利于产品的一致性
  4. 难以支持新种类的产品

实现

  1. 将工厂作为单件
  2. 创建产品
  3. 定义可扩展的工厂

相关模式

AbstractFactory类通常用工厂方法(Factory Method)实现,但它们也可以用Prototype实现。
一个具体的工厂通常是一个单件。

你可能感兴趣的:(抽象工厂模式(abstract factory))