解决的问题:要创建一组相关或者相互依赖的对象
AbstractFactory模式关键就是将这一组对象的创建封装到一个用于创建对象的类(ConcreteFactory)中,维护这样一个
创建类总比维护n多相关对象的创建过程要简单的多。
优点
1、分离了具体的类。抽象工厂模式帮助你控制一个应用创建的对象的类,因为一个工厂封装创建产品对象的责任和过程。它将客户和类的实现分离,客户通过他们的抽象接口操纵实例,产品的类名也在具体工厂的实现中被分离,它们不出现在客户代码中;
2、使产品系列容易交换,只要更换相应的具体工厂即可(经常用工厂方法来实现);
3、有利于产品的一致性,由抽象工厂创建的产品必须符合相同的接口,任何在子类中的特殊功能都不能体现在统一的接口中;