工厂方法模式(Factory Method pattern)

    与简单工厂模式的对比

    以计算器为例

    工厂方法模式

    然后加减乘除各建一个具体工厂去实现这个接口。

    简单工厂模式的最大优点在于工厂类中包涵了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体相关产品的依赖。就像你的计算器,让客户端不用管该用哪个类的实例,只需要把’+’给工厂,工厂自动就给出了相应的实例,客户端只要去做运算就可以了,不同的实例会实现不同的运算。但是问题也就在这里,如你所说,如果要加一个’求M数的N次方’的功能,我们是一定需要给运算工厂类的方法里加’case’的分支条件的,修改原来的类并不是好方法,这就等于说,我们不但对扩展开放了,对修改也开放了,这样违背了开放封闭原则。