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

发布于 2022-09-06 09:44:04 字数 329 浏览 15 评论 0

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

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

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

稀香 2022-09-13 09:44:04

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文