Design patterns 寻找一种设计模式
我有80-90门课,都是一种计算。但每个类都使用一种方法 计算每个类中相同的。每个类中不同的项目是 是计算方法中使用的实例变量 我之所以要寻找一个模式,是因为我所做的工作似乎极为重复。下面是一个仅计算一次的示例,但最多可以进行200次计算Design patterns 寻找一种设计模式,design-patterns,oop,Design Patterns,Oop,我有80-90门课,都是一种计算。但每个类都使用一种方法 计算每个类中相同的。每个类中不同的项目是 是计算方法中使用的实例变量 我之所以要寻找一个模式,是因为我所做的工作似乎极为重复。下面是一个仅计算一次的示例,但最多可以进行200次计算 Protected Overrides Sub Compute(ByVal cache As Cache.ClientCache(Of System.Guid), _ ByRef objIsTi
Protected Overrides Sub Compute(ByVal cache As Cache.ClientCache(Of System.Guid), _
ByRef objIsTickBoxATicked As IClientAnswer(Of System.Guid))
Dim objClientAdviceParas As ClientAdviceParagraphs
'Get the Client Advice Paragraphs
objClientAdviceParas = GetTickBoxesFromCache(GetAnonymousCache(cache), _
CType(cache.Client, Client))
'Return the value
objIsTickBoxATicked.BoolValue = _
CheckTickBox(objClientAdviceParas, m_csClientAdviceParaWelfareBenefitsReferral)
End Sub
您是否考虑过为80-90类创建一个超类?你可以把普通逻辑放在超类中。 我想你应该考虑。p>我有点困惑。您可以说,在每个类中进行计算的方法是相同的,但是它使用不同的实例变量。这是否意味着该方法始终具有相同的签名,但实现不同?在这种情况下,您所能做的就是将方法和公共成员变量分解成一个超类,但您仍然需要为每个计算编写计算方法的实现。这不会为您节省很多工作,但它允许您以多态方式使用计算。通常,如果每个计算都不同(甚至只是一点点),那么您必须独立地实现它。如果所有计算都有一个通用模式,例如:
1. fetch values
2. apply transform
3. sort result
或者类似的东西。正如您所描述的,在您的80-90类中,只有“实例变量”是不同的,我建议将它们设置为一个类,并且只设置一个类。实例负责携带不同的实例变量值,而不是类
如果创建实例的代码很复杂,那么可以创建一个工厂类,每个实例都有一个单独的工厂方法:createXXX()。所有这些方法都将返回同一类的一个新实例,并用不同的值初始化。也许问题在于问题的“语言”和编程语言不一致。也就是说,听起来您正在使用面向对象的方法来解决功能问题
使用函数式语言。如果你把标题写得更具体一点,会有助于人们找到你的问题。要回答这个问题,我们确实需要更多地了解不同计算之间的差异。你能再描述一下吗,或者至少再增加一次计算来说明这些变化的方式吗?到底是什么?也就是说,实际的问题是什么?我已经研究了模板方法模式,但它仍然意味着我有70-80个不同的类。只有一种方法。函数式编程语言是我刚才考虑过的东西,甚至创建了一个DSL,这样提供计算的分析师就可以自己编写计算了。我对函数式语言有足够的了解,认识到它可以做我想要的事情。实施它将是另一件事,谢谢你把我送到正确的方向。