Hey ragazzi Ho un po 'di problemi di progettazione. Ho creato un calcolatore di tasso come segue:Utilizzo di classi generiche astratte nel modello di progettazione software factory
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
posso fare qualcosa di simile:
dim ratevalues as RateValues = RateSetting().Calculator.Calculate()
Abbastanza semplice. Il problema è che ogni tipo di calcolatrice ha il proprio set di proprietà che devono essere impostate affinché i loro metodi Calculate() funzionino correttamente. così finisco per dover implementare come segue
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
Qual è il modo migliore utilizzando farmaci generici e classi astratte per creare un modello di fabbrica che genererà una calcolatrice di un tipo specifico dinamicamente ??
Ho bisogno di una soluzione molto generica in quanto molte percentuali di calcolo verranno aggiunte e modificate tutte con i propri parametri necessari per la logica di calcolo. Voglio essere in grado di farlo rapidamente e possibilmente controllare questo calcolo della velocità tramite db. FYI risponde in C# o VB.Net sono i benvenuti :) Grazie in anticipo!
È questo vb.net? Si prega di aggiungere un tag della lingua per ottenere più attenzione. –
Grazie. E sì è in VB.Net in questo momento, ma potrei convertirmi in C# in modo che la sintassi aiuterebbe. Sono più interessato al design. Grazie ancora. – user1794228