gpt4 book ai didi

c# - 如何配置工厂来生成对象?

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:48 25 4
gpt4 key购买 nike

可能标题不是很清楚。让我澄清一下我要完成的任务。

我必须建立基类:

  • 基础属性
  • 基础问题

BaseProperties 包含有关数学问题生成的数据。例如,在上图中,BasicAdditionProperties 包含 Addend1 和 Addend2,这两个对象知道生成值的范围以表示 BasicAdditionProblem。

所以,这只是一个想法。我想我应该将抽象类传递给工厂,而这个工厂应该会产生问题(在本例中为 BasicAdditionProblem)。

我已阅读,建议将这些值作为基类传递。我的主要疑问是,当我将对象 BaseProperties 传递给工厂时,我是否必须始终强制转换该对象?

或者我可以实现什么想法来模拟这种情况?或者我是否必须有一个静态工厂来维护并用作到具体工厂的映射?提前致谢。

enter image description here

最佳答案

BaseProperties 类中定义一个抽象的 CreateProblem()。这个方法可以一般地用于允许每个具体的 Properties 子类提供它自己的 Factory 方法。

这类似于使用 WebRequest 子类的实例并在其上调用 GetResponse() ,然后返回 WebResponse 的对应子类.

这种分布式抽象工厂方法允许您轻松地将属性/问题对添加到系统中,因为映射两者的代码仅包含在这两个类中。


您还可以使用完整的抽象工厂实现,其中您有 PropertyProblemFactory,它定义了一个 CreateProperties() 和一个 CreateProblem()。因此,在您的示例中,您将拥有知道如何创建匹配集的 AdditionFactory。但这迫使您为每个属性/问题对定义一个额外的类。当您有一个使用当前/选定的 PropertyProblemFactory 的类,用它创建一个 Properties,然后立即使用相同的 PropertyProblemFactory 时,它也最有效> 工厂创建匹配的问题。一旦您放弃了对工厂的引用而只有对 Properties 的引用,就很难重新找到正确的工厂来创建 Problem。 (这可以用另一个类来解决,将对象类型映射到工厂,但复杂性会增加。所以我建议的第一个方法在这种情况下更好)。

关于c# - 如何配置工厂来生成对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11286699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com