SimpleFactory vs. Factory

[1] SimpleFactory

  • 简单工厂,倡导面向接口编程,接口提供能力/服务出去。
  • 例子:根据某个输入,判断究竟建立哪个运算类。
  • 可以想象,简单工厂类中有很多if-else语句。
  • 如果要加一个新的运算类,那么还要在简单工厂类中新加一个if-分支,这样不够优雅哦,破坏了类的开放-封闭原则。
  • 对于客户端来说,要做的就是给简单工厂类一个输入,然后就获取了运算类,可以进行计算。

%XLOR)W%FRU6GW5LOFU630G

[2] Factory

  • 与[1]对比,一个简单工厂类 —> 一个接口+N类对应的工厂。
  • 这样,增加一个新的运算类,只要新建该运算类相应工厂(实现抽象工厂),没有破坏哪个类。
  • 对于客户端来说,就是新建一个运算类工厂,然后创造出相应的运算,从而进行运算。

8LVKQZ}I7X)U~OV8Y)76YE7

[3] SimpleFactory vs. Factory

简单工厂,最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类。对于客户端来说,去除了与具体产品的依赖。

工厂,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。最终,由“客户端”亲自选择工厂。

N7``70_@LHI97FW4QGN]P)M

学习自:《大话设计模式》,快乐的入门读物。

原文地址:https://www.cnblogs.com/alipayhutu/p/2520560.html