我目前正在確定系統中的實體,值對象和聚合。下面要說的實體已經確定:聚合和值對象:刪除?
客戶,CustomerEmail,電子郵件,CustomerAddress,地址,地址類型
而客戶 - >電子郵件是一個多對多的關係,因爲是客戶 - >地址(含地址類型)。這些關係由CustomerAddress和CustomerEmail關係對象表示。
起初我以爲這是直截了當:
實體:客戶,CustomerEmail,CustomerAddress 值對象:電子郵件,地址,地址類型
與客戶是包含所有實體的集合的總根源和VO的上面。
我有這個問題(當我向前推進時,這可能只是因爲我正在瞭解聚合的概念)假設您有一個供應商實體使用相同的地址和電子郵件值對象來反映上述客戶聚合。在這種情況下,當客戶被刪除時,地址和電子郵件不應該被刪除,作爲供應商,甚至另一個客戶可能仍然在引用它們。我見過很多文檔,說明何時刪除聚合,聚合邊界內的所有內容都會一次全部刪除。我是否正確地認爲這不適用於價值對象的總和(即它們是不可變的......如果我們在車輛集合中有一個顏色對象爲綠色......您不會僅僅因爲一輛汽車而刪除顏色被刪除),或者電子郵件和地址是否存在自己的實體(和聚合體)作爲兩個地址,即使它們可能具有相同的屬性,也是實際的單獨身份(即一個是供應商地址,另一個是客戶地址?)如果它們確實是Value Objects,那麼如果VO只能通過它們的聚合根進行操作,那麼如何去處理它們應該被刪除的情況(沒有供應商或客戶仍然引用地址)?
乾杯,
史蒂夫