我正在建立一個財務應用程序,我有兩種方法來計算信用餘額 所以我嘗試遵循基於域驅動設計的設計,我感到一些困惑的方面如何構成我必須注入餘額計算器在信貸實體中。 我嘗試插入信貸叫IBalanceCalculator一個接口,然後當我在信貸調用方法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);
}
}
但我覺得這樣不太好
有人能澄清我是正確的,或者如果存在更好的方法
在你的回答中得到啓發我在考慮消除類信用的InterestType屬性並試圖將一個名爲InterestPolicy的對象放在裏面包含interestType 對於我有意義設置InterestPolicy當我創建信用時,因爲方式將計算的利息不應該改變信用的生活 –
那麼'this.interestType.calculateBalanceAtDate(this.creditHistory,date)'? 'InterestType'可能只是一個用適當的計算器配置的枚舉。 – plalx
是興趣類型是一個枚舉,並確定如何計算利息 我認爲更好,而不是信用的屬性現在我相信InterestType應該屬於InterestPolicy,因爲它的實體決定了如何計算利息。 –