设计模式-创建型-抽象工厂

抽象工厂
我们在前面学习了简单工厂和工厂方法之后,工厂方法虽然解决了简单工厂中职责过重和封闭性问题,但是工厂方法确会存在大量的工厂类,会增加系统的开销,抽象工厂是将一些相关的产品组成一个产品族,由同一个工厂进行生产。
一般情况下,一个具体工厂中只有一个或者一组重载的工厂方法。但是有时候我们希望一个工厂可以提供多个产品对象,而不是单一的产品对象,比如苹果手机工厂,我可以生产手机、平板、电视。

(1) 产品等级结构:产品等级结构即产品的继承结构 一个类是苹果手机他的子类是iPhone7、iPhone7plus、iPhone7s。苹果手机与手机型号之间构成了产品等级结构。苹果手机是父类 具体型号是子类。

(2)产品族:在抽象工厂模式中,产品族是由一个工厂生产的,位于不同产品等级结构中的而一组产品。比如苹果手机 平板 电脑就构成了一个产品族。

这里写图片描述

上图中相同颜色的为一个产品族,一个工厂可以生产一个产品族所有的产品,相同形状的属于同一产品等级,我们需要五个工厂就能满足要求
抽象工厂为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂创建的是一族产品而不是一种产品。
在抽象工厂模式中,每一个具体工厂都提供了多个工厂方法,用于生产多种不同类型的产品,
抽象工厂中的角色
抽象工厂 声明了一组用于创建一族产品的方法 每个方法对应一种产品。
具体工厂 他实现了在抽象工厂中生命的额创建产品的方法生成一组具体产品 每个工厂生产一个产品族的产品族,每个产品都位于产品结构中。
抽象产品 他为每种产品声明接口,抽象产品中声明了产品所具有的业务方法。
具体产品 他定义具体工厂生产的具体产品对象,实现抽象产品中声明的业务方法。

猜你喜欢

转载自blog.csdn.net/liuyubibn/article/details/81358840