意图:提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。
三个关键策略:在设计中的表现;发现并封装变化点;优先使用对象组合,而不是类继承;针对接口编程,而不是针对实现设计。
意图:需要为特定的客户或情况提供特定系列的对象。
问题: 一系列相关的对象需要被实例化。
解决方案:协调不同系列对象的创建过程,提供一种方法保持“如何在客户对象外部执行对象实例化”的规则,客户对象将使用这些实例化出来的对象。
参与者与协作者: 抽象工厂为“如何创建需要的每个系列的对象”定义接口。典型情况下,每个系列都独立拥有自己的ConcreateFactory,通过它被实例化。
效果:这个模式将“使用哪些对象”的规则与“如何使用这些对象”的逻辑相隔离。
实现:定义一个抽象类来制定哪些对象将被创建,然后为每个系列实现一个具体类。表或文件也可以被用于达到同样的目的。
适用范围:当问题领域中有不同系列的对象出现,并且每个系列都将被用于不同的情况下。