【发布时间】:2017-08-10 21:37:32
【问题描述】:
- 实体不应进行相等比较 (https://www.youtube.com/watch?v=xRCOKKUSp9s)。
- 值对象应该有相等比较 (https://www.youtube.com/watch?v=xRCOKKUSp9s)
- 值对象可以引用实体(领域驱动设计书籍)
- 如果值对象的所有(或某些?)属性相等,则值对象是相等的(这一点没有明确说明,但看起来很自然,https://martinfowler.com/bliki/ValueObject.html,http://enterprisecraftsmanship.com/2016/01/11/entity-vs-value-object-the-ultimate-list-of-differences/,https://projectlombok.org/features/Value)。可能存在极少数例外情况(例如,(1, min) == (60, seconds))。
如果一个值对象引用了一个实体,如果我们不能在实体上调用equals(),我们应该如何在equals()比较中包含实体?缺陷在哪里?
对我来说实现Entity.equals() 是很自然的(通常基于类型和ID)。奇怪的是我遇到了那个视频(1)。
【问题讨论】: