# 创建型-工厂模式

# 定义

工厂模式主要是用来将创建对象的行为交给指定的工厂来处理,以组合的方式引入工厂,降低代码的耦合度,也便于代码的拓展

# 种类

  • 静态工厂模式
  • 简单工厂模式
  • 工厂方法模式
  • 抽象工厂模式

# 静态工厂模式

# 简单工厂模式

简单工厂模式即实现一个简单的工厂类,类中有创建实例的具体实现,其他类通过组合方式依赖于这个工厂实现来创建实例

# 特点

  • 它是一个具体的类,非接口 抽象类。有一个重要的create()方法,利用if或者switch创建产品并返回
  • create()方法通常是静态的,所以也称之为静态工厂。

# 缺点

  • 扩展性差(想要新增不同的实例,还需要修改工厂类方法)
  • 不同的产品需要不同额外参数的时候 不支持。

# 工厂方法模式

工厂方法模式是只定义一个创建实例的接口,具体的实现交由子类自己去具体实现,可以让子类根据不同情况有不同的实现

# 特点

  • 拓展性好,如果需要新增不同的实例,可以不用改动原有的子类实现,重新继承再实现新的即可

# 抽象工厂模式

我理解抽象工厂模式更像是工厂方法模式的细化,有些业务场景是比较复杂的,一个实例需要从多个接口中细化而来,并不是类似于工厂方法模式一样可以一个接口解决所有问题,抽象工厂模式是定义多个不同产品线的工厂接口,分别实现工厂类,在工厂中针对不同要求组合返回

PS. 无需太过于注重抽象工厂模式与工厂方法模式的区别,主要看重是否依靠工厂模式对代码成功解耦