我對DDD非常陌生,並且一如既往,當您將自己的頭圍繞在有趣的概念中時,您將不可避免地觸及到某個點或某種情況,這會讓您不確定如何隨之產生的結果學會應該面對某些問題應用。DDD - 從實體中派生價值對象
假設您有兩個關於用戶的不同日期:DateOfBirth
和DateOfRegistration
。將它們分別作爲兩個不同的值來實現是非常有意義的。這很簡單,很棒。
現在,我們假設在一個應用程序Users
可以參與Projects
。一個項目可以有多個members
和一個創建(擁有)它的用戶。
因此ProjectMembers
和ProjectOwner
都是Users
。
有兩種方式Project
來實現這個功能:
答:強類型 - 創建類ProjectMember
和ProjectOwner
然後「行爲」的值對象。要麼讓他們作爲包裝工作,要麼甚至擴展User
類。
B:懶惰的方法 - 根據期望的行爲/期望簡單地命名方法和參數,並推動User
周圍的對象。
在我看來,以下B意味着滴DDD的原則。
以下A會導致數十個班級,其中許多班級不會做任何事情,但會強制執行類型安全。
我很困惑,因爲與簡單的日期相比,用戶是實體甚至聚合根,同時更復雜。
是A,B還是有第三種選擇?