本文主要是介绍抽象工厂 Abstract Factory,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
父博文地址:设计模式 - Design Patterns
一、是什么?
作用:
当我需要创建一个产品家族(很多产品)时,我可以使用抽象工厂。
客户通过抽象接口来创建产品家族,而不需要知道实际产出的具体产品类型。
实现了解耦客户和具体产品。
行为
- 定义一个抽象工厂接口,每个抽象工厂的子类都能创建所有产品家族的产品。
二、实例
上面类图的实现
其它代码就不给了按照类图就能写出来,这里只给出客户的代码:
public class Client {public static void main(String[] args) {// 客户选择使用某一个具体的工厂AbstractFactory abstractFactory = new ConcreteFactory1();// 然后就可以任意创建产品族中的产品,而不需要知道具体的产品(只知道抽象产品AbstractProductA/AbstractProductB)AbstractProductA productA = abstractFactory.createProductA();System.out.println(productA.getClass().getSimpleName());AbstractProductB productB = abstractFactory.createProductB();} }
三、问答
抽象工厂的每个方法,看起来都像是工厂方法?
没错,就是这样。
抽象工厂和工厂方法创建对象方式的不同?
工厂方法在类(
Class
)层面,通过继承以及覆盖来创建对象。新增一个产品时只需要新建一个Class
。抽象工厂在组合(
Composition
)层面。新增一个产品必须改变接口以及重新实现子工厂的方法。新增时有以上差别,只是因为工厂方法只有一个抽象产品,而抽象工厂有多个抽象产品。
1.1 工厂方法 Factory Method
1.1.1 简单工厂 SimpleFactory
这篇关于抽象工厂 Abstract Factory的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!