2011-05-17 98 views
1

存在實體:客戶,如果客戶更改其名稱(通過Web UI),則客戶服務必須檢測到此更改並向管理員發送電子郵件。檢測對域對象的更改

現在是否應將此責任分配給客戶?類似於

c.HasChangedName(NewName);其中c是對客戶的引用

CustomerService可能會根據對客戶實體所做的這些更改進行其他活動。電子郵件只是一個例子。

+0

聽起來像你只需要在你的控制器層邏輯中插入的邏輯,而不是實體。 – Tejs 2011-05-17 18:29:46

回答

4

通過我看來,客戶總根(我想這是一個總根,而不是一個實體)應

customer.ChangeName(string newname) 

方法調用發佈CustomerNameChanged事件。

您可以在Greg Young的github存儲庫中查看some implementation sample。 或者如果不想使用事件源,你可以看看Udi Dahan的post about domain events

+0

絕對的,客戶是聚合根,並感謝噸顯示燈! – Gopal 2011-05-18 12:29:52

+0

你能指點我一些更多的基於域名事件的主題嗎?這是我聽到埃裏克埃文斯談論的一件事,但從未關心它的使用。我想更多地瞭解我可以使用它的各種場景。 – Gopal 2011-05-18 12:48:37

+0

+1域事件的使用是解決這個問題的可靠方法。 – 2011-05-18 13:32:07