Hey Leute, ich habe ein bisschen ein Design-Problem. Ich habe einen Tarifrechner wie folgt:Mit abstrakten generischen Klassen in Software-Design-Fabrik-Muster
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
ich etwas tun kann:
dim ratevalues as RateValues = RateSetting().Calculator.Calculate()
Ziemlich einfach. Das Problem besteht darin, dass jeder Taschenrechnertyp über eigene Eigenschaften verfügt, die festgelegt werden müssen, damit die Calculate() -Methoden ordnungsgemäß funktionieren. So habe ich am Ende mit bis zu implementieren wie folgt
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
Was ist der beste Weg ist, Generika und abstrakte Klassen mit einer Fabrik Muster zu erstellen, die einen Rechner eines bestimmten Typs generieren dynamisch ??
Ich brauche eine sehr generische Lösung, da viele Berechnungsraten hinzugefügt und modifiziert werden, alle mit ihren eigenen Parametern, die für die Berechnungslogik benötigt werden. Ich möchte das schnell machen und diese Ratenberechnung möglicherweise über db steuern. FYI Antworten in C# oder VB.Net sind willkommen :) Vielen Dank im Voraus!
Ist das vb.net? Bitte fügen Sie ein Sprach-Tag hinzu, um mehr Aufmerksamkeit zu erhalten. –
Danke. Und ja, es ist in VB.Net im Moment, aber ich kann zu C# konvertieren, so dass entweder Syntax würde helfen. Ich bin mehr mit dem Design beschäftigt. Danke noch einmal. – user1794228