也称为:Kit
动机
有很多个系列的产品要管理,用户只需要使用先关系列的产品,而不需要知道产品产生的具体方式,同时,在使用产品时,要保证一个客户使用的产品都属于同一个系列的产品。
使用情景
- 系统运行需要独立于产品的产生,组装,以及表示
- 系统运行需要且仅需要一个系列的产品
- 一个产品系列是一起设计,协同使用的,并且该准则不能被打破
- 一系列产品可以被提供,只需要提供接口,而不需要提供具体实现。
结构
参与者
- 抽象工厂
- 具体工厂实现类
- 抽象产品
- 具体产品实现类
- 客户类
使用方式
通常只有一个具体工厂类会在运行时被创建。这个具体工厂类会创建一系列的产品,而如果客户需要不同系列的产品时,则需要创建新的具体工厂类。
抽象工厂会把产生对象的任务代理给具体工厂类。
使用结果
- 隔离具体的实现类
- 使更换产品系列变得更容易
- 保持了使用的产品属于同一个系列
- 增加了提供新产品的难度