一、作用
抽象工厂模式中一个具体工厂可以生产一组相关的具体产品
二、概念
提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类
三、抽象工厂模式结构
1、抽象工厂模式结构
1)AbstractFactory(抽象工厂):它声明了一组用于创建一族产品的方法,每一个方法对应一种产品
2)ConcreteFactory(具体工厂):它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。
3)AbstractProduct(抽象产品):它为每种产品声明接口,在抽象产品中声明了产品所具有的业务方法。
4)ConcreteProduct(具体产品):它定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法。
四、抽象工厂模式应用实例
实例说明:
实例类图:
实例代码:
五、抽象工厂优缺点与适用环境
1、优点
1)抽象工厂模式隔离了具体类的生产
2)当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象
3)增加新的产品族很方便,无须修改已有系统,符合开闭原则
2、缺点
增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,甚至需要修改抽象层代码,这显然会带来较大的方便,违背了开闭原则
3、适用环境
1)一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节
2)系统中有多于一个的产品族,而每次只使用其中某一个产品族
3)属于同一个产品族的产品将在一起使用
4)产品等级结构稳定,不要变
ps:有点懒了,拍的照片🤭