ddd:实体或VO

tik*_*hop 3 oop design-patterns domain-driven-design

假设我有一个Passenger应该包含Passport(government id) 对象的对象。我PassengerPassengerRepository. PassengerRepository创建对服务器的请求并获取数据(json),然后解析接收到的数据并存储在存储库中。

我很困惑,因为我想将其存储Passport为实体并将其放入,PassportRepository但所有有关密码的信息都包含在 json 中,而不是我在上面收到的。

我想我应该将其Passport用作 VO 并将其放入Passenger(聚合)对象中。或者我可以创建一个PassengerService包含PassengerRepositoryPassportRepository

有任何想法吗?

Ode*_*ded 5

值对象是由它们的属性定义的对象——具有相同属性值的两个实例本质上是相同的值。如果这适合您的Passport类型,那么它应该是 VO。

如果它确实是一个 VO,那么你就被排序了——它只能通过聚合来访问。

但是,如果情况并非如此,并且您的域中的护照具有保持不变的身份,而不管属性如何更改(例如,某人更改了他们的姓名),那么您需要考虑在您的域中是否Passport仅执行实体附加到 aPerson或不附加时才有意义。如果它们只在这种情况下有意义,那么它们也应该只能通过聚合来访问。