在域驱动设计(DDD)中,ValueObject具有以下定义
值对象是描述某些特征或对象的对象 属性但不带有身份的概念。
假设我有'客户'实体和'订单'实体。订单与客户端相关,因此通常我会在Order类中添加字段ClientId,因为我可能不会引用客户端实体本身。到目前为止一切都很好......
现在我想知道是否可以创建一个值对象ClientInfo,它包括客户端的名称,客户端状态,还有ClientId ? ClientInfo将是不可变的,只有clientName,clientStatus和clientId的getter。
所以你有它,一个带有实体标识符的值对象。这是违反价值对象的定义,还是我在这里安全?
答案 0 :(得分:4)
引用实体标识符的值对象很好。如果您有两个具有相同信息的ClientInfo对象,则它们可以完全互换。它们的值就像字符串或整数一样。