C# 如何配置工厂以生成对象?
也许标题不太清楚。让我澄清一下我想要实现的目标 我必须学习基类:C# 如何配置工厂以生成对象?,c#,design-patterns,factory,factory-pattern,C#,Design Patterns,Factory,Factory Pattern,也许标题不太清楚。让我澄清一下我想要实现的目标 我必须学习基类: 基本属性 基本问题 BaseProperties包含有关生成数学问题的数据。例如,在上图中,BasicAdditionProperties包含Addend1和Addend2,这两个对象知道生成值的范围以表示BasicAddition问题 所以,这只是一个想法。。我想我应该把抽象类传递给工厂,这个应该会产生问题(在本例中是BasicAdditionProblem) 我已经读过了,建议将这些值作为基类传递。我主要的疑问是,当我把o
- 基本属性
- 基本问题
有多种解决方案。这取决于你想如何编程 抽象类中的抽象方法必须在从抽象类继承的所有类中处理。通过这种方式,您可以轻松地在工厂中调用抽象方法,而无需强制转换 然而,当您需要使用来自一个特定类的大量数据时,为其创建抽象方法是不明智的,您应该简单地强制转换对象
因此,这完全取决于有多少类继承自BaseProperties,以及这些类中有多少数据是相同的。在
BaseProperties
类中定义一个抽象的CreateProblem()
。此方法可以一般地用于允许每个混凝土属性子类提供自己的工厂方法
这类似于使用WebRequest
子类的实例并对其调用GetResponse()
,然后返回WebResponse
的相应子类
这种分布式抽象工厂方法允许您轻松地将属性/问题对添加到系统中,因为映射这两个属性/问题对的代码仅包含在这两个类中
您还可以使用完整的抽象工厂实现,其中有定义
CreateProperties()
和CreateProblem()
的PropertyProblemFactory
。因此,在您的示例中,您将拥有知道如何创建匹配集的AdditionFactory
。但这迫使您为每个属性/问题对定义一个额外的类。当您有一个类使用当前/选定的属性问题工厂
,用它创建一个属性
,然后立即使用相同的属性问题工厂
来创建匹配的问题
时,它的效果最好。一旦您放弃了对工厂的引用,只引用了属性
,就很难重新定位正确的工厂以产生问题
。(这可以通过另一个类来解决,以将对象类型映射到工厂,但复杂性会增加。因此,我建议的第一种方法在这种情况下更好)。我计划让数百个类从BaseProperties继承(从BaseProperties继承的混凝土数量=从BaseProperties继承的混凝土数量问题)那么,如果basicaditionproperties类具有相同类型的数据,那么您也可以创建抽象方法,比如工厂中需要的getter。为了解决问题,您必须始终创建一个特定的基类