概念
自己不生产对象了,让工厂来帮忙生产对象,自己只告诉工厂我要哪种对象。
举个例子:
有个水果工厂,我们通过传入水果的类型,来告诉工厂我们需要哪种水果。至于生产过程,交给水果工厂来处理。
水果工厂:
优点
- 降低耦合;
- 大大减少代码重复,例如某个对象的构造方法很复杂,如果不用简单工厂模式,每次都要写一大堆重复的代码,而使用简单工厂模式可以减少代码的重复,例如,生产一个苹果需要其他对象:
缺点
- 生产的产品种类如果过多,工厂类过于庞大,承担太多职责,变成了超级类。
- 违背单一原则,苹果生产过程需要修改,要修改该工厂类,梨的生产过程要修改,也要修改这个工厂;
- 当生产新的产品时,必须在工厂类中添加新的分支,因此违背了开闭原则。