design-patterns - 使用工厂设计模式如何阻止类必须预测它必须创建的对象类

标签 design-patterns factory-pattern

据我了解,工厂设计模式允许通过使用单独的对象来创建对象,该对象的唯一目的是创建第一个对象。不同类型的工厂可以用来创建不同类型的对象。

我知道这隐藏了主要对象的实例化,但是这肯定只是被工厂的实例化所取代吗?

这种设计模式的一个共同优点是它使类不必预测它必须创建的对象的类。但是,如果工厂应该创建一个特定的类,那么主类仍然需要预测要使用哪种工厂?

我想我误解了工厂的主要目的?

最佳答案

问题比看起来更复杂,因为工厂有很多种,所以客户端获取和调用它们的方式也不同。

  • 如果是 Static Factory你是对的:客户端保留对工厂类的具体依赖。这允许抽象产品类。因此,通过预测工厂,客户不必预测工厂的确切产量。

  • 如果是 Abstract Factory ,客户端将其作为依赖项注入(inject),这意味着它应该在 composition root 中创建。因此客户端既不知 Prop 体的工厂类,也不知 Prop 体的产品类。

  • 如果是 Factory Method ,客户端工厂,并提供具体产品供其父级使用。

还有比这三个更多的工厂,它们的调用方式可能不同;但这三者显示了工厂使用方式上的差异有多么极端。

关于design-patterns - 使用工厂设计模式如何阻止类必须预测它必须创建的对象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62216961/

相关文章:

c# - 我真的应该抽象一切吗

php - 我的工厂应该创建所有对象实例吗?包括新实体吗?

java - 如何使用泛型而不是注释来实现构建器类?

c# - 工厂应该有带参数的构造函数吗?

java - 抽象类扩展具体类

design-patterns - 重构 switch 语句时何时选择策略而不是多态

design-patterns - 两个相同关系数据库完全同步的设计模式

design-patterns - 您在使用软件设计模式方面有哪些实践经验?

.net - .NET Framework 中的构造函数与工厂

添加 rowfactory 后 Javafx TableView 不显示