简单工厂和工厂方法差异点——“简单工厂不能变更正在创建的产品”,这句话应该怎么理解?

新手上路,请多包涵

在《Head First设计模式》中P135看到一段话

简单工厂的的做法,可以将对象的创建封装起来,但是简单工厂不具备工厂方法的弹性,因为简单工厂不能变更正在创建的产品。

在这句的理解上出现了一些问题:

  1. “正在创建的产品”指代的是什么?
  2. 和朋友讨论的时候,他是这样理解上面那句话的——“简单工厂中,产品已经写死在简单工厂的方法中,而工厂方法模式中能够通过增加子类来增加产品”。我不能理解的是,这样不是每增加一个产品类型就要增加一个子类了吗,这跟工厂方法的思想有出入。

希望能得到更多同道中人的意见!感谢!

阅读 2.5k
1 个回答
✓ 已被采纳新手上路,请多包涵

1.“正在创建的产品”指代的就是工厂中实际生产的产品。
2.朋友的理解大致上是正确的。在这里重新解释一下,两种工厂模式都能生成不同类型的产品ABC。之所以说简单工厂弹性较差是因为如果要增加产品D的时候,必须修改原来工厂的方法,可能会影响到产品AB。而工厂方法模式中,只要增加制造产品D的相关子类就行,不会对其他产品产生影响。

设计模式中其中的一个设计原则——“对扩展开发,对修改关闭”,说的就是这种情况。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进