3

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

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

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

有任何想法吗?

4

2 回答 2

5

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

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

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

于 2012-11-07T13:08:42.873 回答
0

我会说护照是VO。一个人可以更换她的护照,这意味着签发了新护照(新系列)。我认为 Passport 只是政府的实体,因为它需要跟踪每个独特的实体。对于我们其他人来说,我们不在乎新护照是否与旧护照具有相同的身份证件。我们关心拥有有效的护照。

于 2012-11-07T14:09:40.680 回答