小编use*_*228的帖子

在软件设计工厂模式中使用抽象泛型类

嘿家伙我有一点设计问题.我创建了一个率计算器,如下所示:

Public Interface ICalculator
 Property PaymentTerm As Double
 Function Calculate() As CommissionValues
 ReadOnly Property CalculationRule As CalculationRuleEnum
End Interface

Public Interface IFlexibleRateCalculator
 Inherits ICalculator
  Property TransferRate As Decimal
End Interface

Public Interface IFixedRateCalculator
 Inherits ICalculator
  Property ContractRate As Decimal
End Interface

Public Interface IRateSettingBase
  Property RateType As RateTypeEnum
  ReadOnly Property Calculator As ICalculator
End Interface

Public MustInherit Class RateSetting
 Implements IRateSettingBase
  Public MustOverride ReadOnly Property Calculator() As ICalculator Implements IRateSettingBase.Calculator
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

dim ratevalues as RateValues = RateSetting().Calculator.Calculate()
Run Code Online (Sandbox Code Playgroud)

很简单.问题是每种类型的计算器都有自己的属性集,需要设置它们才能使Calculate()方法正常工作.所以我最终必须实现如下

FlexibleRateCalculator
Implements …
Run Code Online (Sandbox Code Playgroud)

vb.net generics abstract-class factory-pattern

5
推荐指数
1
解决办法
802
查看次数