什么是工厂模式?你以为工厂模式很简单( 四 )


抽象工厂模式可用于以下情况:
如何实现抽象工厂模式
抽象工厂模式包括以下角色:
(抽象工厂):用于声明生成抽象产品的方法
(具体工厂):实现抽象工厂声明的生成抽象产品的方法 , 生成一组具体产品 。这些产品构成了一个产品家族 , 每个产品都位于一定的产品层次中;
(抽象产品):为每个产品声明一个接口 , 并在抽象产品中定义产品的抽象业务方法;
(具体产品):定义具体工厂生产的具体产品对象 , 实现抽象产品接口中定义的业务方法 。
本文中的示例使用汽车铸造厂制造汽车的示例 。假设我们是一家汽车铸造厂 , 我们负责为梅赛德斯-奔驰和特斯拉两家公司制造汽车 。
我们简单把奔驰理解为需要加油的车 , 特斯拉理解为需要充电的车 。其中 , 奔驰轿车包括跑车和商用车 , 特斯拉也包括奔驰轿车和商用车 。
在上述场景中 , 我们可以分别对待跑车和商用车 。有一个单独的跑车工厂和一个单独的商用车工厂 。
这样以后我们就不需要把工厂给其他厂家造车了 , 只要是跑车或者商用车就行 。同样 , 如果我们要添加不同类型的车辆 , 例如越野车 , 我们不需要修改跑车或商用车中的任何内容 。
以下是抽象产品 , 梅赛德斯和特斯拉汽车:

什么是工厂模式?你以为工厂模式很简单

文章插图
以下为具体产品 , 奔驰跑车、奔驰商用车、特斯拉跑车、特斯拉商用车:
什么是工厂模式?你以为工厂模式很简单

文章插图
这是抽象工厂:
什么是工厂模式?你以为工厂模式很简单

文章插图
以下是具体工厂:
什么是工厂模式?你以为工厂模式很简单

文章插图
“开闭原则”的倾向
“开闭原则”要求系统对扩展是开放的 , 对修改是封闭的 , 以达到通过扩展增强其功能的目的 。对于涉及多个产品系列和多个产品层次结构的系统 , 增强功能包括两个方面:
抽象工厂模式的这种特性被称为“开闭原则”的倾向 。抽象工厂模式支持以倾斜方式添加新产品 。它有助于增加新的产品系列 , 但不能提供新的产品级别 。结构的添加提供了这样的便利 。
抽象工厂模式总结
抽象工厂模式提供了一个接口 , 用于创建一系列相关或相互依赖的对象 , 而无需指定它们的具体类 。抽象工厂模式 , 也称为 Kit 模式 , 是一种对象创建模式 。
抽象工厂模式是所有工厂模式中最抽象、最通用的形式 。
抽象工厂模式的主要优点是它隔离了具体类的生成 , 这样客户就不需要知道创建了什么 , 而且每次可以通过具体的工厂类来创建一个产品族中的多个对象 , 方便添加或更换产品系列 。添加新的混凝土工厂和产品系列非常方便;主要缺点是添加新的产品层次非常复杂 , 需要修改抽象工厂和所有具体工厂类 , 并且倾向于支持“开闭原则” 。
5 三种工厂模式比较
简单工厂模式的优缺点
工厂方法模式的优缺点
抽象工厂模式的优缺点
三种工厂模式的比较与转换
什么是工厂模式?你以为工厂模式很简单

文章插图
简单工厂:用于生产同一层次结构中的任何产品 。(添加新产品 , 主要是新产品 , 需要修改工厂类 , 符合单一职责原则 , 不符合开闭原则)