让模型由其他模型组成的不良做法?

时间:2010-05-24 01:39:56

标签: asp.net-mvc

我的情况是我有一个具有各种属性的模型A.我发现其他一些模型的属性相似。我的想法是我可以创建模型B和模型C,并且模型A是具有模型B属性和模型C属性的复合。

试图确定这是否是处理这种情况的最佳方法。

3 个答案:

答案 0 :(得分:1)

当属性(例如状态)是共性的元素时,我肯定倾向于使用组合而不是继承。使用继承时,最好等到行为是通用性,现在或迫切需要覆盖。

答案 1 :(得分:1)

在某些情况下它绝对有效。假设您有一个Person类和一个Company类,它们具有公共属性streetNumberstreetNamepostcode等等。创建一个名为Address的新模型类,PersonCompany都包含。在这种情况下,继承是完全错误的方式。

答案 2 :(得分:1)

您正在查看的是创建Aggregate RootDomain Driven Design(DDD)主体的核心范例。

您应用中的某些型号似乎属于其他对象的“顶部”或“作为根”。例如,对于客户,您可能拥有Contact模型,然后包含ContactPoint s(名称,地址等)的集合。 或者是Post(在博客的情况下),其中包含Comment s,Tite,Body和TagSet(用于标记)的集合。注意我highlighted项作为对象的方式 - 这些是其他模型类型,而不是简单类型(string s,int s等。)

诀窍将在何时以及如何决定“填充”这些聚合根树/图表时出现。 IE浏览器。您如何仅查询单个TagSet?你会先到顶部并获得相应的Post吗?也许您只是想将所有Post的标签“aspnetmvc”重命名为“asp.net-mvc”,这样您就可以切入并获取TagSet项。

MVC Storefront教程有一些很好的例子。看看你是否可以。