【问题标题】:Can a 'Factory' Design Pattern have more than 1 abstract type in a factory?“工厂”设计模式可以在工厂中拥有超过 1 种抽象类型吗?
【发布时间】:2020-10-07 07:35:57
【问题描述】:

请注意;工厂,而不是抽象工厂。

说,有一个接口 Shape 与具体类如Pentagon。假设一个抽象类 Quadrilateral 实现了Shape 并有自己的具体类型,例如Square

这仍然被认为是工厂方法吗?

【问题讨论】:

  • 如果你问一个类是否可以有多个工厂方法,答案是肯定的。
  • 感谢您的提示,但您能澄清一下吗? @jaco0646
  • 我要问的是:指的是例如hereshape是一个接口;如果它也有一个名为 quadrilateral 的抽象类并有自己的实现,那么该图是否仍然是工厂模式?
  • @AMoses 工厂将创建一个新的 Square 实例,所以是的,它仍然是工厂模式。抽象类 Quadrilateral 永远无法实例化。
  • @AMoses 您正在寻找的是抽象工厂模式,它可以在同一站点tutorialspoint.com/design_pattern/abstract_factory_pattern.htm 中找到当您想要解耦创建类似类型的对象系列时(例如在您的情况下) ,其中 Shape 是最通用的, Quadrilateral 或 Circle based 是一个系列),您使用抽象工厂。

标签: java design-patterns factory-pattern


【解决方案1】:

首先,Shape 接口代表工厂创建的产品。只要工厂返回Shape 实例,产品继承层次结构的任何其他细节都与工厂及其客户无关。

其次,评论中链接的教程描述了 Head First Design Patterns 所称的简单工厂。它不是 GoF 设计模式。你可以阅读我对 GoF 模式的看法here

最后,警告:当心任何使用“工厂模式”短语的博客或教程。没有名为“Factory”的单一模式。工厂是一类模式,包括 GoF 书内外的实例。至少有四种常用的工厂模式。

【讨论】:

  • 回答了这个问题,然后再回答一些问题。感谢您阐明为什么互联网示例以不同方式实施“工厂方法”;有些实际上是“简单工厂”。
  • 这个答案here,由@jaco0646 在他的另一个答案中提到,也有很大帮助。
猜你喜欢
  • 2010-09-06
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多