定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

简单工厂VS工厂方法:简单工厂模式最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但增加一个功能就违背了开放-封闭原则。工厂方法模式却不会违背,但把简单工厂内部逻辑判断移到了客户端代码来判断,因为客户端需要决定实例化哪一个工厂来实现运算类。想要增加功能,本来是改工厂类的,而现在是修改客户端。可以使用反射解决分支判断问题。
