實體和值對象都是域對象。瞭解DDD之間的區別有什麼用?例如,是否將域對象視爲實體或值對象來培養清潔的域模型?DDD:實體和值對象之間的區別是什麼?
6
A
回答
9
是的,這是能夠分辨出來,特別是當你在設計和實現你的類型非常有幫助。
一個主要的區別是,當涉及到處理平等,因爲實體應該比值對象完全不同的行爲。知道你的對象是一個實體還是一個值對象告訴你如何實現類型的平等。這本身是有用的,但它並不止於此。
實體是可變類型(至少通過概念)。實體背後的全部理念是它代表了一個具有已知生命進程的域概念(即它被創建,它經歷了幾次轉換,它被存檔並可能最終被刪除)。它代表即使經過數月或數年,同樣特定的'事物',並且它沿途改變狀態。
值對象另一方面只是表示沒有任何固有標識的值。雖然你不必這樣做,但它們非常適合作爲不可變類型來實現。這非常有趣,因爲任何不可變類型都是線性安全的。當我們進入多核時代時,知道何時將對象實現爲不可變類型非常有價值。
它也有很大幫助,在單元測試時,平等的語義是衆所周知的。在這兩種情況下,平等都是明確的。我不知道你使用的是什麼語言,但是在許多語言(C#,Java,VB.NET)中,通過默認引用來確定相等性,這在許多情況下並不特別有用。
相關問題
- 1. DDD和實體和值對象之間的區別。選擇聚合根目錄
- 2. 實例和對象之間的功能區別是什麼?
- 3. 對象和字符串對象之間的區別是什麼
- 4. 實體,實體集和屬性之間有什麼區別?
- 5. 實例和對象之間有什麼區別?
- 6. 類,對象,實體:有什麼區別?
- 7. 對象,*和沒有類型之間的區別是什麼?
- 8. 是什麼Projections.distinct(Projections.count( 「對象ID」))和Projections.countDistinct( 「OBJECTID」)之間的區別
- 9. _EPROCESS對象和_KPROCESS對象之間有什麼區別
- 10. Singleton對象和sessionfactory單例對象之間有什麼區別
- 11. 實例和類的對象之間的基本區別是什麼?
- 12. 實體集和實體之間有什麼區別?這是定義標準嗎?
- 13. DDD:連接對象是實體對象還是值對象?
- 14. $(())和expr之間的區別是什麼?
- 15. $和$ .fn之間的區別是什麼?
- 16. ++和:haskell之間的區別是什麼?
- 17. $(「」)和$ .find(「」)之間的區別是什麼?
- 18. 「\」和「\。」之間的區別是什麼?
- 19. 「$ | ++」和「$ | = 1」之間的區別是什麼
- 20. $(...)和`...`之間的區別是什麼
- 21. .equals()和==之間的區別是什麼?
- 22. [undefined]和[,]之間的區別是什麼?
- 23. 是什麼在JavaScript中的新對象和新的對象()之間的區別
- 24. 有什麼實體約束和協會之間的區別?
- 25. 對象和實例有什麼區別?
- 26. 「實體」和「記錄」之間的區別?
- 27. (類型)值和類型(值)之間的區別是什麼?
- 28. 價值和價值2之間的區別是什麼
- 29. 標量查詢和實體查詢之間有什麼區別?
- 30. 交易經理和實體經理之間有什麼區別