一.简单工厂模式

什么是简单工厂

当创建一个对象的逻辑相对复杂的时候,我们可以定义一个工厂类,传入指定参数,来帮我创建对象。将创建对象的逻辑封装到工厂类中,减少了创建对象时候的重复代码。适合较少的对象创建,如果对象过多的话,工厂类的职责就太重了,难免代码过于复杂,不利于维护。另外简单工厂类违背了开闭原则,如果新增产品的时候,也就是需要增加创建对象的时候,不可避免的需要修改简单工厂中的逻辑。不利于扩展过于复杂的产品结构。

简单工厂类结构图

工厂模式详解

二. 工厂方法模式

什么是工厂方法

在简单工厂基础上,将工厂定义为结构,由接口的不同实现类创建不同的对象,同样能够隐藏创建对象的细节,但是符合开闭原则,方便扩展,增加一个产品的时候只需要增加一个工厂的实现类就可以。但是每个产品都会对应一个对象,产品越多,需要维护的类就越多。增加程序结构的复杂度。

工厂方法类结构图

工厂模式详解

三. 抽象工厂模式

什么是抽象工厂

为了解决更为复杂的产品结构,能够隐藏产品创建的过程和细节,但是不符合开闭原则。由于出现了产品族和产品登记结构的细分,产品族一旦做出改变,所有的工厂都都需要重新维护。不方便扩展产品族。而且抽象出来的类更多了,增加了代码了理解难度。

抽象工厂类结构图

工厂模式详解

四. 产品族和产品等级结构之间的关系

  1. 漫威工厂可以制造不同超级英雄,比如说绿巨人,蜘蛛侠,美国队长
  2. 每个超级英雄又可以有不同的表现形式,比如电影,动漫,手办
  3. 我理解的产品族就是电影,动漫,手办就算一个产品族
  4. 绿巨人,蜘蛛侠,美国队长这些就是产品结构
  5. 创建一个产品的时候需要包含产品族中的所有。不同等级结构由调用者指定
  6. 不知道理解的是否正确,如果有问题希望大家能够指出,谢谢

五. 类结构图源码

示例源码: https://github.com/TheBiggestMouse/FactoryMode

相关文章: