抽象工厂模式的应用场景是在产品种类比较复杂的情况下。尤其是产品具有产品族,比如手机的系列、汽车的系列等。
在工厂方法模式下,所有的产品类都实现一个共同的父类或接口。一个具体类的继承关系是:
Product接口 -> ProductA类
Product接口 -> ProductB类
而在抽象工厂中,产品被划分为一个个产品族,一个具体的产品类的继承关系如下:
Product接口 -> ProductA抽象类 ->ProductA1类
Product接口 -> ProductA抽象类 ->ProductA2类
Product接口 -> ProductB抽象类 ->ProductB1类
Product接口 -> ProductB抽象类 ->ProductB2类
有n个产品族,就需要n个工厂类。所以在抽象工厂模式下,工厂类的继承关系如下:
Factory接口 -> FactoryA类
Factory接口 -> FactoryB类
这样,FactoryA
类根据参数创建A1、A2等A产品系列;FactoryB
同理。