实体和值对象都是域对象。了解DDD之间的区别有什么用?例如,是否将域对象视为实体或值对象来培养清洁的域模型?DDD:实体和值对象之间的区别是什么?
6
A
回答
9
是的,这是能够分辨出来,特别是当你在设计和实现你的类型非常有帮助。
一个主要的区别是,当涉及到处理平等,因为实体应该比值对象完全不同的行为。知道你的对象是一个实体还是一个值对象告诉你如何实现类型的平等。这本身是有用的,但它并不止于此。
实体是可变类型(至少通过概念)。实体背后的全部理念是它代表了一个具有已知生命进程的域概念(即它被创建,它经历了几次转换,它被存档并可能最终被删除)。它代表即使经过数月或数年,同样特定的'事物',并且它沿途改变状态。
值对象另一方面只是表示没有任何固有标识的值。虽然你不必这样做,但它们非常适合作为不可变类型来实现。这非常有趣,因为任何不可变类型都是线性安全的。当我们进入多核时代时,知道何时将对象实现为不可变类型非常有价值。
它也有很大帮助,在单元测试时,平等的语义是众所周知的。在这两种情况下,平等都是明确的。我不知道你使用的是什么语言,但是在许多语言(C#,Java,VB.NET)中,通过默认引用来确定相等性,这在许多情况下并不特别有用。
相关问题
- 1. DDD和实体和值对象之间的区别。选择聚合根目录
- 2. 对象和字符串对象之间的区别是什么
- 3. 实体,实体集和属性之间有什么区别?
- 4. 实例和对象之间有什么区别?
- 5. 是什么Projections.distinct(Projections.count( “对象ID”))和Projections.countDistinct( “OBJECTID”)之间的区别
- 6. 对象,*和没有类型之间的区别是什么?
- 7. _EPROCESS对象和_KPROCESS对象之间有什么区别
- 8. DDD:连接对象是实体对象还是值对象?
- 9. ++和:haskell之间的区别是什么?
- 10. $(())和expr之间的区别是什么?
- 11. $(...)和`...`之间的区别是什么
- 12. [undefined]和[,]之间的区别是什么?
- 13. 是什么在JavaScript中的新对象和新的对象()之间的区别
- 14. 对象和实例有什么区别?
- 15. “实体”和“记录”之间的区别?
- 16. (类型)值和类型(值)之间的区别是什么?
- 17. 价值和价值2之间的区别是什么
- 18. 交易经理和实体经理之间有什么区别
- 19. 数据库中的对象和实体有什么区别?
- 20. VB.NET中以下对象Instantiation之间的区别是什么?
- 21. Nix:nixpkgs和nixpkgs.pkgs之间的具体区别是什么?
- 22. C#中的对象和类之间有什么区别?
- 23. Perl中的对象和类之间有什么区别?
- 24. Ref对象的getPeeledObjectId()和getObjectId()之间有什么区别?
- 25. JavaScript中'实体'对象和函数对象之间的生命周期有什么区别?
- 26. 区别:%% a和%variable%变量之间的区别是什么?
- 27. Response.Write和<%= %>之间的实际区别是什么?
- 28. `_.defaults`和`_.extend`之间的实际区别是什么?
- 29. while(true)和for(;;)之间的实际区别是什么?
- 30. 特殊形式和宏之间的实际区别是什么?