抽象工厂模式的正式定义:定义了一个接口,创建相关或依赖的对象族,不需要制定具体类型。
模式的UML建模图如下:
同工厂方法模式一样,实现了客户代码与具体时间解耦的功能。
在这里相总结抽象工厂模式和工厂方法模式的异同:
相同点:
1、都将客户代码与对象实例化隔离;
2、都是针对工厂方法创建对象;
不同点:
1、工厂方法模式使用继承,抽象工厂模式使用的对象的组合;
2、工厂方法模式主要针对一个对象的创建,抽象工厂模式针对的对象族的创建(当新增一个产品时,需要修改所有子类的接口,颇为麻烦,所以接口一般很大)。