简单工厂和工厂方法差异点——“简单工厂不能变更正在创建的产品”,这句话应该怎么理解?
在《Head First设计模式》中P135看到一段话
简单工厂的的做法,可以将对象的创建封装起来,但是简单工厂不具备工厂方法的弹性,因为简单工厂不能变更正在创建的产品。
在这句的理解上出现了一些问题:
- “正在创建的产品”指代的是什么?
- 和朋友讨论的时候,他是这样理解上面那句话的——“简单工厂中,产品已经写死在简单工厂的方法中,而工厂方法模式中能够通过增加子类来增加产品”。我不能理解的是,这样不是每增加一个产品类型就要增加一个子类了吗,这跟工厂方法的思想有出入。
希望能得到更多同道中人的意见!感谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
1.“正在创建的产品”指代的就是工厂中实际生产的产品。
2.朋友的理解大致上是正确的。在这里重新解释一下,两种工厂模式都能生成不同类型的产品ABC。之所以说简单工厂弹性较差是因为如果要增加产品D的时候,必须修改原来工厂的方法,可能会影响到产品AB。而工厂方法模式中,只要增加制造产品D的相关子类就行,不会对其他产品产生影响。
设计模式中其中的一个设计原则——“对扩展开发,对修改关闭”,说的就是这种情况。