假设我有一个应该包含Passport (政府id)对象的Passenger对象。我正在从PassengerRepository获取Passenger。向服务器发出PassengerRepository创建请求并获取数据(json),然后解析接收到的数据并存储在存储库中。
我很困惑,因为我想将Passport存储为实体并将其放到PassportRepository中,但是所有关于密码的信息都包含在json中,而不是我上面收到的信息。
我想我应该使用Passport作为VO,并将它放在Passenger (聚合)对象中。或者我可以创建一个包含PassengerRepository和PassportRepository的PassengerService。
有什么想法吗?
发布于 2012-11-07 21:08:43
值对象是由其属性定义的对象-具有相同属性值的两个实例本质上是相同的值。如果这对于您的Passport类型是正确的,那么它应该是一个VO。
如果它确实是一个VO,那么你是排序的-它只能通过聚合来访问。
但是,如果情况并非如此,并且您的域中的passport有一个无论属性更改(例如,有人更改其姓名)都保持不变的身份,那么您需要考虑,在您的域中,Passport实体是否只有在附加到Person时才有意义。如果它们只在这个上下文中有意义,那么它们也应该只通过聚合来访问。
发布于 2012-11-07 22:09:41
我会说Passport是一个VO。一个人可以更换她的护照,这意味着一个新的护照(新的序列号)被签发。我认为Passport只是一个政府实体,因为它需要跟踪每个独特的实体。对于我们其余的人来说,我们并不关心新护照和旧护照是否具有相同的id。我们关心的是有一本有效的护照。
https://stackoverflow.com/questions/13270345
复制相似问题