0

当我构建 LOB 应用程序时出现了这个问题。问题是根据您的经验,将 Contact 关系建模为继承还是委托更好?
例如:
联系人:有名字、姓氏、全名、地址、电子邮件等。
客户拥有所有这些以及其他客户特定的东西。
经销商拥有所有这些以及其他经销商特定的东西。
A ..... has .... and .... etc
现在客户和经销商最好从 Contact 派生或拥有 Contact 参考?
注意:我知道这可能是一个争论的问题,但我想知道有经验的开发人员是如何解决这个问题的。

4

3 回答 3

2

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

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

于 2013-01-02T15:49:49.143 回答
1

您应该更喜欢组合而不是继承,尤其是在项目的第一阶段。如果这会给你带来显着的优势,那么将来你可能会选择派对模式。

(另请注意,该书指出,使用 Party (5) 的明显情况是当您的模型中有人员和组织并且您看到共同行为时。行为在这里具有优先权。一旦您对数据进行建模,就更喜欢组合)。

于 2013-01-03T11:01:36.883 回答
0

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

您不会仅仅因为它们都具有名称这一事实而使用继承对文件和人进行建模。尽管在某些(奇怪的)域中它们都继承自一个通用的“NamedThing”接口,但这可能是有意义的。

总而言之,在大多数情况下,我会选择“有一个”,但并非总是如此。

于 2013-01-03T11:49:16.367 回答