回答
如果你的域名是地理的或政治的,那么它可能是一个实体,但在一般情况下,一个国家只是一个与地址相关的值。在这种情况下,在对象模型的上下文中,它只是一个值。
至于存储,领域模型并不关心。如果方便,可以使用数据库,如果您愿意,可以使用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. 将对象视为实体还是值对象?
- 12. 价值对象或实体
- 13. 域模型:既不是实体也不是价值对象
- 14. 应该评论历史是一个实体,DDD
- 15. DDD聚合和价值对象
- 16. 在DDD中,任何不是实体或值对象的类都应该成为服务吗?
- 17. 应该重写实体(在DDD中)Object.Equals?
- 18. 对于HTML实体,我应该使用命名语法还是数值语法?
- 19. 我们应该缓存原始对象还是缓存对象?
- 20. Hibernate实体应该自动装配还是“手动”实例化?
- 21. 具有活动记录的实体是对象还是组件?
- 22. DDD:在哪里创建实体对象?
- 23. 域对象是否应该实现IXmlSerializable?
- 24. 主义的国家实体
- 25. DAO对象应该是类还是构造?
- 26. 实体对象是否应该由存储库公开?
- 27. NHibernate应该为实体分配id还是应该由应用程序处理?
- 28. DDD - 值对象CRUD
- 29. DDD:在Aggregate中实例化Value对象还是将它作为参数传递?
- 30. 我应该使用StructureMap还是Session来管理具体实例?
嗯,我超晚了,但你如何提出一个值对象被'存储'?我想一个存储库是没有问题的,也许在内存中的值是静态的? – 2014-04-25 10:35:12
值对象不会成为聚合根,因此它不需要自己的存储库。如果使用的是ORM,则可以将值对象映射到父聚合根下的表中的组合字段,或者甚至在某些情况下将单独的表与唯一有意义的身份标识为拥有者对象的唯一表。 – JasonTrue 2014-04-25 16:21:43