工厂模式的本质

  • 在创建的对象的时候不使用new,而是使用工厂方法去创建对象,避免了由于创建对象的时候参数过多带来的不便
  • 创建对象统一管理,实现解耦

简单工厂模式(静态工厂模式)

类结构
Java 设计模式 02 工厂模式
Java 设计模式 02 工厂模式
接口方法:
Java 设计模式 02 工厂模式
实现类:
Java 设计模式 02 工厂模式
Java 设计模式 02 工厂模式

工厂方法:提供一个静态的方法,用于创建对象

Java 设计模式 02 工厂模式

Java 设计模式 02 工厂模式
分析:

  • 可以通过一个工厂方法去创建对象,实现解耦
  • 但是假设要再加一个对象的时候,下面的代码就会跟着改,维护成本大

方法工厂模式

对于一个类就创建一个工厂

类结构:
Java 设计模式 02 工厂模式

Java 设计模式 02 工厂模式

Java 设计模式 02 工厂模式

Java 设计模式 02 工厂模式
Java 设计模式 02 工厂模式
Java 设计模式 02 工厂模式
Java 设计模式 02 工厂模式

总结:

  • 每次新建一个类就要增加一个类的工厂方法
  • 在增加一个类的时候不需要改变其他类的代码
  • 总体代码量大

比较简单工厂模式和方法工厂模式:

  • 简单工厂模式改动的时候其他代码也要跟着一起改动,方法工厂模式可以实现增加一个类不改变其他代码
  • 简单工厂模式代码量小于方法工厂模式
  • 所以在选择的时候还是会选择简单工厂模式,因为它带来的是简单的精简

抽象工厂模式

简单的说就是创建一个更加抽象的大工厂,用于生产工厂,再由工厂去生产产品。
如下结构图:
Java 设计模式 02 工厂模式
创建一个最大的工厂,用于生产手机和路由器(最大的抽象)
Java 设计模式 02 工厂模式
工厂的实现类,一个是华为工厂,一个是小米工厂,在这几个工厂中分别生产自己品牌的手机和路由器
Java 设计模式 02 工厂模式
Java 设计模式 02 工厂模式

手机功能方法的接口
Java 设计模式 02 工厂模式
手机功能的实现类
Java 设计模式 02 工厂模式
Java 设计模式 02 工厂模式

路由器功能的接口
Java 设计模式 02 工厂模式

路由器功能的实现类
Java 设计模式 02 工厂模式
Java 设计模式 02 工厂模式
测试类:

Java 设计模式 02 工厂模式
总结:

  1. 可以将产品在代码层进行隔离,无需关心创建的细节
  2. 可以将一系列的产品统一到一起创建
  3. 类之间紧密联系,可能导致更加抽象和理解难度

相关文章:

  • 2021-06-17
  • 2021-05-11
  • 2021-06-06
  • 2022-12-23
  • 2022-12-23
  • 2021-08-07
  • 2022-01-01
  • 2021-12-14
猜你喜欢
  • 2021-08-29
  • 2021-10-09
  • 2022-12-23
  • 2021-06-06
  • 2022-12-23
  • 2022-01-07
  • 2021-07-03
相关资源
相似解决方案