2013-02-28 145 views
2

我目前在閱讀Applying Domain-Driven Design with Examples in C# and .NET。我有一個關於域模型的初始草圖了兩個問題:參考人員課程令我困惑

  1. 我不是以英語爲母語,所以什麼「參考人」意味着什麼在商業領域還是在英語中一般?
  2. 作者對草圖進行了評論,儘管「參考人員」類出現在圖上的兩個不同的聚合中,但在運行時他們是同一個實例,這怎麼可能?如果一個聚合根是垃圾收集不會導致收集該實例,從而使另一個聚合不穩定?

回答

2

在這裏,我文章中,我們談論的圖片:

enter image description here

  1. 一位顧客有時是一個組織,而不是一個個體,它可能有ReferencePersons,您可以聯繫列表。我們可以說參考人是代表一個組織的人。 (Aggregate 1)

    當客戶想下訂單時,我們也需要確切地知道我們正在與之交談的人。 (Aggregate 2)

  2. 您應該仔細閱讀,作者在書中評論說:「類ReferencePerson在圖4-13中的兩個不同的聚合中,但實例不是」。這意味着當您從數據庫同時加載訂單和客戶時,Order.ReferencePerson和Customer.ReferencePersons [index]不會指向內存中的同一個對象,即使它們是同一個人。

此外,即使它們指向相同的實例,也會在沒有對它們進行引用時收集.Net對象。如果集合1被收集,但集合2仍然引用ReferencePerson A,則尚未收集A.

+0

+1發佈圖片(我真的應該做到這一點)。關於第二個答案,請您提供進一步的解釋,關於刪除客戶的例子,您可以說什麼不會導致所有參考人員都離開,現在訂單會指向一個空引用? – 2013-03-01 17:08:45

+1

@Sniffer:我更新了答案 – phnkha 2013-03-02 03:22:15

+0

這就是讓我困惑的原因,因爲我更喜歡將它們看作是由兩個聚合體共享的單個實例,否則我們將如何處理衝突(參考人員在一個聚合體中進行了更改,但沒有在另一箇中,儘管他們是同一個人)? – 2013-03-02 14:59:38