SimpleFactory vs. Factory
[1] SimpleFactory
- 简单工厂,倡导面向接口编程,接口提供能力/服务出去。
- 例子:根据某个输入,判断究竟建立哪个运算类。
- 可以想象,简单工厂类中有很多if-else语句。
- 如果要加一个新的运算类,那么还要在简单工厂类中新加一个if-分支,这样不够优雅哦,破坏了类的开放-封闭原则。
- 对于客户端来说,要做的就是给简单工厂类一个输入,然后就获取了运算类,可以进行计算。
[2] Factory
- 与[1]对比,一个简单工厂类 —> 一个接口+N类对应的工厂。
- 这样,增加一个新的运算类,只要新建该运算类相应工厂(实现抽象工厂),没有破坏哪个类。
- 对于客户端来说,就是新建一个运算类工厂,然后创造出相应的运算,从而进行运算。
[3] SimpleFactory vs. Factory
简单工厂,最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类。对于客户端来说,去除了与具体产品的依赖。
工厂,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。最终,由“客户端”亲自选择工厂。
学习自:《大话设计模式》,快乐的入门读物。