创建型-抽象工厂模式(Abstract Factory)

介绍

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

主要解决:主要解决接口选择的问题。

抽象工厂示例:

我们将创建 Shape 和 Color 接口和实现这些接口的实体类。下一步是创建抽象工厂类 AbstractFactory。接着定义工厂类 ShapeFactory 和 ColorFactory,这两个工厂类都是扩展了 AbstractFactory。然后创建一个工厂创造器/生成器类 FactoryProducer

AbstractFactoryPatternDemo 类使用 FactoryProducer 来获取 AbstractFactory 对象。它将向 AbstractFactory 传递形状信息 ShapeCIRCLE / RECTANGLE / SQUARE),以便获取它所需对象的类型。同时它还向 AbstractFactory 传递颜色信息 ColorRED / GREEN / BLUE),以便获取它所需对象的类型。

 

 工厂AbstractFactory是抽象的,抽象的总工厂里面分成两个具体的子工厂。

通过工厂生成器类FactoryProducer获取具体的子工厂,获取之后下面和工厂模式相同。

与工厂模式区别:抽象工厂基础工厂,将多个工厂类包在一个抽象类中,通过工厂生成器类再去实例化具体工厂对象。

 

 

 

在 Java 中使用模式

识别方法 我们可以通过方法来识别该模式——其会返回一个工厂对象 接下来 工厂将被用于创建特定的子组件

1、javax.xml.parsers.DocumentBuilderFactory#newInstance()

2、javax.xml.transform.TransformerFactory#newInstance()

3、javax.xml.xpath.XPathFactory#newInstance()

 

转:https://www.runoob.com/design-pattern/abstract-factory-pattern.html

转:https://refactoring.guru/

原文地址:https://www.cnblogs.com/fangyanr/p/14024234.html