美文网首页
设计模式(创建型)-- 工厂模式

设计模式(创建型)-- 工厂模式

作者: zhujunhua | 来源:发表于2020-09-11 10:18 被阅读0次

工厂模式(Factory Design Pattern)

一般情况下,工厂模式分为三种更加细分的类型:简单工厂模式工厂方法模式抽象工厂模式
(在 GoF 的《设计模式》一书中,它将简单工厂模式看作是工厂方法模式的一种特例)

当创建逻辑比较复杂,是一个“大工程”的时候,我们就考虑使用工厂模式,封装对象的创建过程,将对象的创建和使用相分离。

简单工厂(Simple Factory)

也叫作 静态工厂方法模式(Static Factory Method Pattern)
通过工厂类创建对象,并且根据入参决定具体子类对象。
一种是每次都返回新创建的对象;
另一种是预先创建各个对象, 使用时返回同一个对象(对于同一个参数)。

使用场景:
创建对象的逻辑比较简单。

工厂方法(Factory Method)

Head First的定义:
定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

使用场景:
a. 当每个对象的创建逻辑都比较复杂的时候,为了避免设计一个过于庞大的简单工厂类时,将创建逻辑拆分得更细,每个对象的创建逻辑独立到各自的工厂类中。
b. 避免很多 if-else 分支逻辑时。(使用多态特性 优化简单工厂模式中的if判断)

比如: Glide的model加载 ModelLoaderFactory

抽象工厂(Abstract Factory)

Head First的定义:
提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

使用场景:
工厂需要创建不止一个类对象的时候, 使用抽象工厂模式。

判断要不要使用工厂模式的最本质的参考标准。

  1. 封装变化:创建逻辑有可能变化,封装成工厂类之后,创建逻辑的变更对调用者透明。
  2. 代码复用:创建代码抽离到独立的工厂类之后可以复用。
  3. 隔离复杂性:封装复杂的创建逻辑,调用者无需了解如何创建对象。
  4. 控制复杂度:将创建代码抽离出来,让原本的函数或类职责更单一,代码更简洁。

参考:
极客时间-设计模式之美-工厂模式
漫画:设计模式之 “工厂模式”

相关文章

网友评论

      本文标题:设计模式(创建型)-- 工厂模式

      本文链接:https://www.haomeiwen.com/subject/vxrpektx.html