为什么需要工厂方法模式

因为简单工厂模式违背了单一原则和开闭原则。

定义

一个产品一个工厂,例如苹果有苹果工厂,梨子有梨子工厂,不再将多个产品放入同一个工厂中生成。

疑问

这样做和不用工厂,直接new有什么区别?
仍然可以解决对象构造函数太复杂的问题,交给工厂来隐藏这些细节。

优点

  • 工厂类不会变成超级类,符合单一职责原则;
  • 当生成新的产品时,无需更改既有的工厂,只需要添加新的工厂即可,符合开闭原则;