嘿家伙我有一点设计问题.我创建了一个率计算器,如下所示:
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)