如何建模对象间关系的子集

时间:2009-05-25 19:54:38

标签: domain-driven-design

我刚接触域模型,所以请原谅我提出一个基本问题。

如果域对象与另一个域对象具有1-many关系,但使用第一个对象的逻辑仅与该对象相关对象的子集一起使用,那么公开此子集的最佳方法是什么?

例如,假设Person与许多Orders相关,但某些外部逻辑只需要检查与Person关联的“Dispatched”Orders。 Person是否应该具有DispatchedOrders属性以及其他子集的其他属性(例如CompletedOrders等),还是这个糟糕的设计?假设出于性能原因,我无法过滤内存中的对象,必须使用SQL只回退我感兴趣的子集。

由于

2 个答案:

答案 0 :(得分:1)

如果您正在使用SQL来查找您感兴趣的集合,那么您将处于一个完美的世界。关系查询都是关于发现那种事情。找到完美的查询,然后找出结果元组的类是什么,即每个结果元组的对象,并适当地处理它们。

在您的示例中,您需要一组“Dispatched Orders”,其中包含每个人所需的任何信息。

答案 1 :(得分:0)

我认为你有正确的想法 - DispatchedOrders会告诉我你回到我身上的对象集合。正如Curt所说,您可以使用SQL /存储过程来获取数据。

一个警告 - 确保域与业务流程匹配,并不是您对该流程的理解的插值。也就是说 - 为什么一个人对一个订单具有首要地位,并且当你构造其他对象时,你画了什么角落。订单项是否也包含订单,这会导致对象膨胀吗?与您的客户讨论应该有助于确定答案。

SubSonic成名的Rob Conery有一个good discussion of these types of issues。值得一听。