在对象模型中实现多对一关系

时间:2011-07-19 19:08:59

标签: domain-driven-design dns

假设一个Person对象可能有很多地址但必须有一个

您是否赞成在对象模型中明确显示所需的地址?如果是这样,任何实施提示?

干杯,
Berryl

Person{
    Address TheRequiredAddress {get;}    

    IList<Address> OtherAddresses {....}
}

1 个答案:

答案 0 :(得分:2)

我喜欢这个问题。与大多数设计决策一样,这是上下文的。如何使用它。

假设我在西雅图有一个主要地址,在凤凰城有一个避暑别墅,还有一个用于商业目的的邮政信箱。我的主要地址是否会优先于我的其他地址,或者地址的选择是否是任意的?在你尝试我的避暑别墅或我的邮政信箱之前,你会试着在西雅图找我吗?

如果主要地址的处理方式不同,我会将其存储在明确不同的位置。否则,将它们存储在任意排序的集合中,并在类实现中强制执行至少一个要求。