介绍
意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
主要解决:主要解决接口选择的问题。
抽象工厂示例:
我们将创建 Shape 和 Color 接口和实现这些接口的实体类。下一步是创建抽象工厂类 AbstractFactory。接着定义工厂类 ShapeFactory 和 ColorFactory,这两个工厂类都是扩展了 AbstractFactory。然后创建一个工厂创造器/生成器类 FactoryProducer。
AbstractFactoryPatternDemo 类使用 FactoryProducer 来获取 AbstractFactory 对象。它将向 AbstractFactory 传递形状信息 Shape(CIRCLE / RECTANGLE / SQUARE),以便获取它所需对象的类型。同时它还向 AbstractFactory 传递颜色信息 Color(RED / 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/