意图:需要为特定的客户(或情况)提供对象组。
问题:需要实例化一组相关的对象。
解决方法:协调对象组的创建。提供一种方式,将如何执行对象实例化的规则从使用这些对象的客户对象提取出来。
参与者与协作者:AbstractFactory为如何创建对象组的每个成员定义接口。一般每个组都由独立的ConcreteFactory进行创建。
效果:这个模式将“使用哪些对象”的规则与“如何使用这些对象”的逻辑分离开来。
实现:定义一个抽象类来指定创建哪些对象。然后为每个组实现一个具体类。可以用表或文件完成同样的任务。
结构图:
小结:
1. 首先,找出实例化规则,定义一个带接口的抽象类,其中的接口为每种需要实例化的对象提供一个方法。
2. 然后,从这个类为每个组实现具体的类。
3. 客户对象使用具体工厂对象创建所需的服务对象。
摘自《设计模式解析(第2版)》第11章
Tags: 设计模式