抽象工厂(Abstact factory)模式

意图:

         提供一个创建一系列相关或相互依赖对象(属于同一个产品族,如不同风格的一组控件)的接口。AbstractFactory模式将产品对象的创建延迟到它的ConcreteFactory子类。

本质:

         产品有多种风格,但其生产过程相似,通过继承和多态机制可以实现不同风格产品的创建,只需变更相应的抽象工厂即可。

缺点:

         AbstractFactory接口确定了可以被创建的产品集合。当增加一个新的产品时,需要更改所有工厂的接口(包括抽象父类),增加该产品的创建过程。解决这个问题可以通过把工厂定义为可扩展的方式(不太灵活):给创建对象增加一个参数(如参数化工厂方法),这样增加一个产品时只需在所需的工厂中增加接口即可。

解决方法:

         通常的方法是为每一个产品定义一个工厂方法


UML图;

 抽象工厂(Abstact factory)模式_第1张图片

和工厂方法模式的区别和联系:

         抽象工厂对具体产品进行了归类,这样一个抽象工厂就具备了创建一系列同一风格产品的功能,是一对多的关系。而工厂方法模式一般是一对一的模式(参数化工厂方法除外)。

        抽象工厂模式具体到某一产品的创建来说就是以工厂方法模式实现的。

 

你可能感兴趣的:(抽象工厂(Abstact factory)模式)