问的好,这就是简单工厂和工厂方法的区别所在
简单工厂模式的最大优点在于工厂类中包含了必要的判断逻辑,根据客户端的选择条件动态的实例化相关的类,对于客户端来说,去除了与去除了与具体产品的依赖,想要与你不用关心你使用的是哪个,我来帮你搞定。就像你的计算器,让客户端不用实例那个运算,只需要把“+”传递给工厂就可以了,工厂会动态的实例化那个类,客户端只要管运算,不同的实例会有不同的运算,但是问题也在这里,比如我们在新增一次 给N做M次方的运算,那么必须要在简答工厂模式中 新增Case分枝,修改原有的类?那可不是什么好方法,这等于说,我们不但对扩展开始,也对修改开放了,违反了,开放-封闭原则。
怎么解决呢?
我们犟龟这个工厂类与分枝耦合,那么就对它下手,根据依赖倒转倒转原则,我们把工厂类抽象出一个接口,这个接口只有一个方法,就是创建抽象产品的工厂方法,然后,所有要生成的工厂都去实现这一个接口,这样一个简单工厂模式的工厂可u编程一个工厂抽象机
背了这么多的概念,我认为 方法工厂模式相对与简单工厂模式,没有什么特别的优势,除了,简单工厂确实算是,与具体的多个实现相互耦合之外,不满足依赖倒置原则,其他可以说基本上没有任何的优势,还有一点,除以方法工厂的 可以保证 一块程序段,替换实现是非常容易的之外,其他相对与简单工程模式,真的没有任何的优势。