实体“有”联系人或实体“是”联系人

时间:2013-01-02 09:21:57

标签: c# design-patterns architecture

当我构建LOB应用程序时出现了这个问题。问题来自您的经验,将联系人关系建模为继承或授权是否更好? 例如:
联系方式:有姓名,姓氏,姓名,地址,电子邮件等。
客户拥有所有这些以及其他客户特定的东西 经销商拥有所有这些以及其他经销商特定的东西 一个......有......和....等 现在,客户和经销商最好是从联系人那里获得还是有联系人参考? 注意:我知道这可能是一个争论问题,但我想知道有经验的开发人员如何解决这个问题。

3 个答案:

答案 0 :(得分:2)

有一本名为“分析模式”的书,其中详细介绍了如何对这种结构(以及许多其他结构)进行建模。在本书中,继承用于建模基类Party类型,稍后可以将其子类化为更具体的PersonOrganization类。您可以找到一些信息here (pdf)

我认为继承在这种情况下是一个很好的解决方案,因为你清楚地建模 is-a 关系。您只需要小心,不要仅仅为了代码重用而滥用继承。

答案 1 :(得分:1)

您应该更喜欢构图而不是继承,尤其是在项目的第一阶段。可能在未来你会来 Party 模式,如果这给你带来了显着的优势。

(另请注意,该书指出使用Party(5)的明显案例是当您在模型中有人和组织并且您看到常见行为时。行为在此处具有优先权。你正在建模数据,更喜欢组合。)

答案 2 :(得分:0)

根据对这两个词的公认解释,只是客户不是一种联系方式。

您不会仅仅因为他们共享他们都有名字的事实而对使用继承的文件和人物进行建模。虽然在某些(奇数)域中,它们都可以继承一个共同的" NamedThing"接口。

总结一下,我要去"有一个"在大多数情况下,但并不总是。