二十三种设计模式之抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
抽象工厂模式的应用场景
当一个对象都有相同的约束时,可以使用抽象工厂模式。
打个比方说,这个工厂的几个产品都需要经过某些共同的步骤和打上相同的商标,这一组产品可以在一个工厂里面生产,减少很多重复的代码在不同的地方都出现多次。
抽象工厂模式的优点/缺点:
1.优点
针对同一组产品创建新的生产线,只需实现那组产品的抽象工厂接口即可创建新的工厂类。
即:同样要生产衣服时,只需继承Factoryproducer 就可以创建新的工厂类,比如衣服又有商务女装、商务男装、时尚女装、时尚男装等等,可以继承Factoryproducer建立相应的建立商务女装工厂、商务男装工厂、时尚女装工厂、时尚男装工厂
2.缺点
抽象方法模式的最大缺点就是产品族本身的扩展非常困难。如果在产品族中增加一个新的产品类型,则需要修改多个接口,并影响现已有的工厂类。
上面这句话,有些人不怎么理解,我給大家解释一下,打个比方说,你要在这个工厂创建三个对象,原本只是创建两个对象的,那么你就要在抽象方法中添加一个创建对象的方法,那么所有实现了这个接口的类都是要重新添加这个创建对象的方法,这就是对之前的工厂有影响的原因。
如下实例:若要给超级工厂AbstractFactory增加一个布料工厂,不仅需要给抽象类AbstractFactory实现get布料的方法,还要是形状工厂和颜色工厂中实现该方法,当工厂很多时,会十分麻烦。
应用实例:
工厂生产衣服,首先我们需要一个超级工厂(AbstractFactory),要生产不同的形状和颜色的衣服,我们将它分为形状工厂(ShapFactory)和颜色工厂(ColorFactory)
超级工厂(比如此处是商务女装工厂)如下:

形状工厂(ShapFactory)和颜色工厂(ColorFactory)继承该抽象类,并实现相应的方法,如下:


形状工厂可以生产圆形(circle),长方形(rectangle),正方形(square)的商务女装。
颜色工厂可以生产红色(red),绿色(green),蓝色(blue)的商务女装。
为形状创建接口与相应的实体类:


为颜色创建接口与相应的实体类:


此时关系如下:
我们要选择一件衣服的样式,首先要选择要去形状工厂还是颜色工厂,因此我们需要一个工厂创造器来生成我们需要的工厂,如下

生产一件衣服时,我们首先选择工厂类型,首先选择形状工厂还是颜色工厂,接着传入参数选择对应的形状或颜色衣服
输出结果如下:

此时关系如下图:
类图关系如下:

————————————————
参考:
原文链接:https://blog.csdn.net/wenzhi20102321/article/details/78153437

浙公网安备 33010602011771号