工厂方法:为什么不在工厂中为每种类型创建一个 CreateMethod?

问题描述 投票:0回答:1

所以我正在阅读《设计模式》一书,以查找有关工厂模式的一些详细信息。我正在阅读有关实现的两种主要变体:

  • 为每个类型使用抽象工厂和具体工厂
  • 仅使用一个具有参数化 Create(type) 函数的工厂

为什么我应该避免为工厂中的每种类型实现一个静态方法?对我来说,这与第二种方法类似,但由于自动完成而更好(当您不必根据 .txt 或其他内容中的字符串类型重新实例化类时)。我什至可以将不同的参数传递给不同的类型,这在两种实现中都是不可能的。

问候

design-patterns factory-pattern
1个回答
0
投票

没有人阻止你这样做。抽象工厂围绕内聚方法划定了界限。它说:

“如果你想为这个概念实现一个工厂,就必须实现这些方法。”

所以这些方法在含义上是相关的。 如果您仔细查看 dofactory 站点示例 中的 UML 图,就会发现:

如果你有一个工厂实现,它不会随机实现每个产品的创建。产品的组合很重要。客户根据条件选择具体工厂一次,但所选择的工厂多次创建产品。您决定一次并创建多次。但使用工厂方法,每次你想要创建一个产品时,你必须决定“如何”。

© www.soinside.com 2019 - 2024. All rights reserved.