<Java设计模式>—抽象工厂模式
抽象工厂的定义其实和工厂方法模式定义差不多,具体的可以去看看工厂方法模式,下面主要说说区别:
从UML类图上面观察,抽象工厂和工厂方法主要的区别就是生产的产品了,抽象工厂生产了一系列的产品,而工厂方法只是简单的生产了一个产品,打个比方,就应该比较好理解了。抽象工厂,我们就把它比方成电脑生产的厂家,电脑其实一个很多零件组成的,显示器、键盘、电池、主板…(组件还有不同的属性),那么这一个个组件就是一个个产品,那么电脑厂家就是这个工厂,用来生产这些小组件,然后进行拼装,才变成了一台电脑;那么工厂方法模式就好比一个酒厂,它的产品就是酒,没啥可拼装的(酒瓶属于包装了)。
那么抽象工厂的应用场景就应该是可以很好的切换产品的属性,就像上面举得电脑厂家样,如果生产一个高配电脑和一个低配电脑(只考虑cpu高低),那么其他的属性产品是不用制作模具生产,只是简单的换个cpu,那么就可以生产出我们想要的两种产品。
不过呢,抽象工厂模式也是有它的缺点的,假如我们在原来电脑的基础上,我想添加一个指纹识别的模块,那么我就需要改动很大,1、改动抽象工厂类,和该类的子类;2、添加一个指纹识别的抽象产品和该产品的具体实现;3、将具体工厂和具体的产品进行关联。