回答
如果你的域名是地理的或政治的,那麼它可能是一個實體,但在一般情況下,一個國家只是一個與地址相關的值。在這種情況下,在對象模型的上下文中,它只是一個值。
至於存儲,領域模型並不關心。如果方便,可以使用數據庫,如果您願意,可以使用XML;如果您有與國家相關的行爲,則可以使用該類。
一個實體的特徵之一是它有一個生命週期,即它隨時間而變化。值對象不。事實上,價值對象應該是不可變的。所以問自己的問題是,「這個國家的對象隨着時間而改變嗎?」
區分實體和值對象的另一方面是具有相同屬性的兩個值對象是相同的。因此,如果你有一個名稱爲「法國」的國家實例,它是相同作爲另一個名稱爲「法國」的國家實例,即使它們是兩個不同的實例(假設這是國家的唯一財產這個討論)。想想大多數語言中的字符串,字符串「fubar」等於字符串「fubar」的另一個實例。
另一方面,實體即使具有相同的屬性也是不同的。名爲「John Smith」的一位顧客可能與另一位名爲「John Smith」的顧客不一樣。
因此,鑑於這些特點,您應該能夠決定。由於只能有一個「法國」,並且它不會隨着時間而改變,所以它可能是一個價值對象 - 除非您的應用需要跟蹤更多關於可能隨時間而改變的國家。
法國已經在5.0版本中:http://en.wikipedia.org/wiki/French_Fifth_Republic;) – MSalters 2009-09-14 13:43:29
想象一下:
您有另一個實體 - 客戶。
客戶實體引用國家對象。
你有填充國家2個實體實例具有相同的值(即「法國」)對象
您從
- 如果你想國家爲刪除第一個實體(或第一實體對象)刪去國家對象第二個實體對象太
=>國家是一個實體對象 - 如果你VANT國家只對第一個實體對象被刪除
=>國家是一個值對象
- 1. 實體,價值對象還是它應該是什麼?
- 2. DDD:連接對象是實體對象還是值對象?
- 3. 我應該使用其他實體對象還是其ID?
- 4. JPA實體和DDD實體應該是相同的類嗎?
- 5. DDD - 實體是否應該創建實體?
- 6. DDD - 從實體中派生價值對象
- 7. DDD:實體在技術上,但看起來像價值對象?
- 8. DDD:幫助我進一步瞭解價值對象和實體
- 9. DDD:實體和值對象之間的區別是什麼?
- 10. DDD做法:我應該爲價值對象創建存儲庫
- 11. DDD:分類實體/值對象
- 12. 將對象視爲實體還是值對象?
- 13. 價值對象或實體
- 14. 域模型:既不是實體也不是價值對象
- 15. 我是否把價值對象看得太遠(DDD)
- 16. 應該評論歷史是一個實體,DDD
- 17. DDD對價值對象和實體和字典類型的建模
- 18. DDD聚合和價值對象
- 19. 應該重寫實體(在DDD中)Object.Equals?
- 20. 在DDD中,任何不是實體或值對象的類都應該成爲服務嗎?
- 21. 對於HTML實體,我應該使用命名語法還是數值語法?
- 22. 國家名稱應該是文本框,當國家是非美國和法國在magento結帳頁
- 23. DDD值對象
- 24. 我們應該緩存原始對象還是緩存對象?
- 25. 表單應該包含一個對象還是一個對象?
- 26. Hibernate實體應該自動裝配還是「手動」實例化?
- 27. 具有活動記錄的實體是對象還是組件?
- 28. 班上有「太多價值對象」嗎? (我正在實施DDD)
- 29. DDD:在哪裏創建實體對象?
- 30. 域對象是否應該實現IXmlSerializable?
嗯,我超晚了,但你如何提出一個值對象被'存儲'?我想一個存儲庫是沒有問題的,也許在內存中的值是靜態的? – 2014-04-25 10:35:12
值對象不會成爲聚合根,因此它不需要自己的存儲庫。如果使用的是ORM,則可以將值對象映射到父聚合根下的表中的組合字段,或者甚至在某些情況下將單獨的表與唯一有意義的身份標識爲擁有者對象的唯一表。 – JasonTrue 2014-04-25 16:21:43