gpt4 book ai didi

domain-driven-design - DDD : Connection objects are Entity Object or Value Object?

转载 作者:行者123 更新时间:2023-12-04 14:32:28 24 4
gpt4 key购买 nike

我正在开发一个用户可以互相关注的应用程序,类似于 Twitter。

在阅读了 DDD 之后,我了解到我的用户是实体对象——我使用他们的唯一 ID 来指代他们。

当一个用户“关注”另一个用户(即形成一个连接)时,该关系存储在一个多对多表中。其字段包括FollowerID , TargetID , 和 Status .每个 Follower/Target 组合只能有两条记录(一个 Active,另一个 Inactive),因此我可以根据对象的属性安全地识别对象。

所以,我认为我的 Connection 对象是值对象,而不是实体对象,但我不确定。你能帮我做这个决定吗?

最佳答案

您是正确的,实体是唯一的并且带有具有身份的概念(即只能存在一个唯一用户)。一个 Connection依赖于其他 User实体。它代表了两个用户之间的某些方面。该方面是是否存在事件或非事件连接。如果不包含用户正在连接的数据,则连接没有身份。它甚至可能在数据库中有自己的主键,但从域的角度来看,它没有自己的身份。

因此,我会说Connection值(value) 目的。

为了支持我的结论,Microsoft.Net Architecting Applications for the Enterprise ,第 187 页,说:

A value object class represents an entity in the domain that mostly contains data and lives for the data it contains. A value object is fully identified by a combination of values it contains. An entity object, on the other hand, has its own life and rich behavior regardless of the data it contains. Entity objects are usually objects with a longer lifetime. A value object represents an aspect of an entity and can live only in relation to an entity.



同样在第 189 页:

One further comment is needed to explain the difference between entities and value objects. You don’t need a repository or a data mapper for a value object. You need a repository only for an entity. The repository (or the mapper) for a given entity will certainly take care of all value objects that depend on a given entity.

关于domain-driven-design - DDD : Connection objects are Entity Object or Value Object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10333938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com