0
首先我的要求是當需求以這種方式演變時,如何區分責任?
「我們可以在其上創建一個帳戶投入資金,當我們購買項目,我們降低了賬戶」
所以我的AccountController看起來像
class AccountController
{
private IAccountDataSource _accountDataSource;
Create(Account anAccount)
{
_accountDataSource.Insert(anAccount);
Render(anAccount.Id);
}
}
但隨後有一個新的要求 「有些人可以有一個免費帳戶(所有項目將是免費的),但如果我們創建一個真正的帳戶,然後我們刪除了免費帳戶」
所以我的控制器.Create成爲
Create(Account anAccount)
{
_accountDataSource.Insert(anAccount);
RemoveFreeAccount(anAccount.Customer);
Render(anAccount.Id);
}
RemoveFreeAccount(Customer aCustomer)
{
_accountDataSource.Remove(new AccountFilter() { Type='Free', CustomerId=aCustomer.Id });
}
但對我來說,感覺就像我應該把這個RemoveFreeAccount
別的地方,但我不知道在哪裏,因爲IAccountDataSource
只是假設來處理數據存儲。
這是一個很好的解決方案,但是您不覺得CRUD系統有太多抽象嗎? –
我的經驗是沒有系統保持簡單的CRUD系統。你的問題就是一個很好的例子。免費帳戶功能是業務規則,而不僅僅是CRUD。從一開始就做,或者稍後再做一次維護噩夢。 – jgauffin
您使用哪個API /框架來處理事件?有沒有像這樣的內置工具? –