我们之前知道了什么是工厂模式,简言之,就是根据参数不同利用不同的类创建不同的对象。
实际上,抽象工厂模式和工厂模式相似,只不过是这个工厂中除了生产某种商品,还会生产另一种商品。
举个例子:
越南代工厂是Nike,Adidas两个工厂的球鞋生产地。现在我们假设球鞋除了品牌都是一样的,那么Nike,Adidas就是工厂类,而越南代工厂就是Nike,Adidas的基类,球鞋是越南代工厂的基类,两个公司想要生产球鞋,只需要告诉越南代工厂,具体细节有他实现,两个公司不必为了细节操心。这就是工厂模式。用户就是主方法,决定买那个厂商的球鞋,厂商是工厂,决定造球鞋,越南代工厂就是再深层次的类,决定怎么制造球鞋。
现如今,Nike和Adidas想要扩展业务,所以在越南代工厂中开始造衣服,假设衣服除了品牌也完全一样,那么Nike和Adidas只需告诉越南代工厂除了鞋,还要造衣服。这就是抽象工厂模式。这个模式中,用户依旧是主方法,用户将需求(鞋或者衣服)告诉Nike或者Adidas,剩下的都不用管了。Nike和Adidas也只需要告诉越南代工厂需要球鞋还是衣服,剩下的让代工厂处理。因此,代工厂除了继承鞋子类,还需要继承衣服类才能同时生产两种商品。
我们可以看到,抽象工厂模式是工厂模式的业务扩展,思想运用到代码上就是逻辑扩展。
只要了解了工厂模式,抽象工厂模式很容易理解,就没必要放逻辑图了,这些图看完更晕。。。