目录

大话设计模式8:工厂模式

大话设计模式:8.工厂模式

工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
TL;DR:相比于简单工厂将实例化过程封装,工厂模式进一步将分支与实例化的耦合分离。

工厂模式结构图

1. 工厂模式 vs 简单工厂模式

1.1. 回顾简单工厂:

最大优点:工厂类包含必要逻辑判断,跟客户端选择条件,动态实例化相关的类,去除了与具体产品的依赖。

缺点:增加功能时,需要修改原有类(简单工厂中的判断),违反开放-封闭原则。

1.2. 分支与简单工厂类解耦

将简单工厂抽象出一个接口,即创建抽象产品的工厂方法,然后所有生产具体类的工厂,去实现这个接口。

1.3. 工厂模式的优点

  1. 克服 简单工厂违反开放-封闭原则 的缺点
  2. 保持 封装对象创建过程 的优点

1.4. 工厂模式的缺点

  1. 每增加一个产品,就需要加一个产品工厂的类,增加了额外的开发量
  2. 无法避免修改客户端代码

反射是进一步解决分支判断的方法。