2012-02-29 27 views
9

值對象應該在DDD方法中持有對實體的引用嗎?值對象應該保持對實體的引用嗎?

編輯

@Dmitry:

這可能是我的情況。在這裏,我附上了類圖,其中Account持有對IInvoiceable項目集合的引用。我以Tenant作爲實體,但它只擁有1個帳戶,我不認爲Account需要身份。其部分Tenant。或者我應該把它當作實體嗎?對我來說這沒有意義。

enter image description here

回答

15

是的,可以。這將是一個相對隱晦的案例,但DDD允許它,它可以是有用的。從DDD book by Eric Evans

VALUE OBJECTS甚至可以引用ENTITIES。例如,如果我要求在線地圖服務提供從舊金山到洛杉磯的風景優美的駕車路線,則可能會派生出一個路線對象,通過太平洋海岸公路將洛杉磯和舊金山連接起來。即使它引用的三個對象(兩個城市和一條高速公路)都是實體,那麼該Route對象將是VALUE。

page #98

+0

謝謝,我編輯了我的帖子,也許這將揭示我犯了一個錯誤 – Ivan 2012-02-29 19:22:19

+0

可能是這種情況,你需要合併租戶和帳戶到一個實體 - TenanatAccount。或者你可能有Tenant是Aggregate root和Account是Aggregate根內的實體。或者您的賬戶可能仍然是Value對象 - 並持有對其他實體的引用。它很難給你一個建議,因爲我們對你的域名不夠了解。這些方法都沒有違反DDD,所以選擇一個讓你現在感覺最好的方法,稍後再改變它,因爲你對領域的理解不斷髮展。 – Dmitry 2012-02-29 19:31:21

+0

非常感謝。我可能將他們合併在一起,因爲單獨的租戶看起來太貧乏了。 – Ivan 2012-02-29 19:33:05

相關問題