嘿,我有一些設計問題。我創建了一個率計算器如下:在軟件設計工廠模式中使用抽象泛型類
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
我可以做這樣的事情:
dim ratevalues as RateValues = RateSetting().Calculator.Calculate()
很簡單。問題是每種類型的計算器都有自己的一組屬性,需要設置它們以使Calculate()方法正常工作。 所以我最終實現如下
FlexibleRateCalculator
Implements IFlexibleRateCalculator
Private mRequestedRate As Decimal
Public Function Calculate() As RateValues Implements ICalculator.Calculate
FixedRateCalculator
Implements IFixedRateCalculator
Private mTransferRate As Decimal
Public Function Calculate() As RateValues Implements ICalculator.Calculate
什麼是使用泛型和抽象類來創建一個工廠模式,將動態生成特定類型的計算器的最佳途徑?
我需要一個非常通用的解決方案,因爲許多計算速率將被添加和修改,並且都使用它們自己的計算邏輯所需的參數。我希望能夠快速做到這一點,並可能通過數據庫控制這些費率計算。 FYI答案在C#或VB.Net歡迎:) 在此先感謝!
這是vb.net嗎?請添加語言標記以獲得更多關注。 –
謝謝。是的,它現在在VB.Net,但我可能會轉換到C#,所以任何語法都會有所幫助。我更關心這個設計。再次感謝。 – user1794228