抽象工厂模式是指一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象。如果用图来描述,提供创建对象的接口与工厂方法模式类似,返回一系列相关产品,实现过程也需推延到子系列类去实现。与工厂方法模式的区别就在于它们的层次模型不同。
抽象工厂模式的工厂是按照产品族进行分开
1、意图
提供一个创建一系列相关、相互联系对象的接口,而无需指定它们具体的类
2、角色及责任
2.1 抽象工厂角色(Abstract Factory):担任这个角色的是工厂方法模式的核心,是与应用系统商业逻辑无关的。
2.2 具体工厂角色(Concrete Factory):这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,这个逻辑是与应用系统的商业逻辑紧密相关的。
2.3 抽象产品角色(Abstract Product):担任这个角色的类是工厂方法模式所创建的对象的父类或共同拥有的接口。
2.4 具体产品角色(Concrete Product):抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例,这是客户端最终需要的东西,内部一定充满了应用系统的商业逻辑。