在看到抽象工厂的时候,在这里面要注意的就是抽象二字,正是因为有了这个抽象才把多而复杂的问题给简单化了,在生活中经常看到一些系列性的东西,但是这些系列性的东西再生产的时候要如何方便呢,这个问题就是今天要说的最重要的事情,在代码的世界中也是一个道理,下面这张图就是解释这个问题的最好途径之一。
通过图中可以看到冰淇淋后面有很多种口味,就不一一列举了,首先我们在生产冰淇淋的时候就需要有一个工厂了,这个工厂是用来生产冰淇淋的,生产完冰淇淋以后我们需要有不同的口味已满足顾客需求吧,那就再创建一个专门负责口味调制的工厂,那这个口味调制可能就是多个了,毕竟为了满足效率就会让每个工厂只负责一件事情,完成上面这些步骤只需要把冰淇淋的份量再进行一个划分就好了,这也需要一个工厂来完成,其实在生活中可以发现这些步骤,最早出现的是以前的福特汽车生产线,每条生产线只负责一件事情,然后把汽车的生产步骤拆分成一步步的工作,把生产成本降到了当时极低,效率极大的提高。
所以抽象工厂也是把一个系列的产品进行抽象,然后根据抽象类的产品派生出多个具体产品,我们最开始的那个抽象工厂是不负责实际操作的,它只是一个接口,通过接口实现实际的工厂和实际产品。
总结:
抽象工厂模式是为了让创建工厂和一组产品与使用相分离,并可以随时切换到另一个工厂以及另一组产品;
抽象工厂模式实现的关键点是定义工厂接口和产品接口,但如何实现工厂与产品本身需要留给具体的子类实现,客户端只和抽象工厂与抽象产品打交道。
缺点:
规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口
增加了系统的抽象性和理解难度
以上这些都是看过一些关于抽象工厂的资料后进行的一个小理解,如有不足之处还请指出。