私はクレジットの残高を計算する2つの方法を持っています。 ドメインドリブンデザインに基づいた設計に従おうとしています。バランス計算機クレジット・エンティティでは 私は信用方法CalculateBalanceAtDateを呼び出すとき、これはこれは例私はどのようにサービスドメインの注入を処理する必要がありますか?
credit {
protected IBalanceCalcultar _calculator;
....
private void _InitializeBalanceCalculator()
{
if (_balanceCalculator == null)
switch (InterestType)
{
case EInterestType.OutstandingBalance:
_balanceCalculator = new OutstandingBalanceService();
break;
case EInterestType.GlobalBalance:
_balanceCalculator = new GlobalBalance();
break;
default:
throw new Exception();
}
}
public void CalculateBalanceAtDate(DateTime date, bool moratory)
{
_InitializeBalanceCalculator();
_balanceCalculator.GetBalance(this, date);
}
}
ですが、私はこの方法はあまり良くないと感じ
を使用しているもののインスタンスを決定IBalanceCalculatorと呼ばれる信用のインターフェイスを挿入しよう
誰かが私を明確にすることができます
あなたの答えにインスパイアされている私はクラスクレジットのInterestType属性を削除し、その中にInterestPolicyという名前のオブジェクトを配置していると思っています 私のためにInterestPolicyを設定しました。計算されます利子は、信用のライブで変更すべきではありません –
'this.interestType.calculateBalanceAtDate(this.creditHistory、date)'はどうでしょうか? 'InterestType'は適切な計算機で設定された列挙型に過ぎません。 – plalx
yes InterestTypeは列挙型であり、利息の計算方法を決定します InterestTypeはInterestPolicyに属している必要があります。 –