我的情况是我有一个具有各种属性的模型A.我发现其他一些模型的属性相似。我的想法是我可以创建模型B和模型C,并且模型A是具有模型B属性和模型C属性的复合。
试图确定这是否是处理这种情况的最佳方法。
答案 0 :(得分:1)
当属性(例如状态)是共性的元素时,我肯定倾向于使用组合而不是继承。使用继承时,最好等到行为是通用性,现在或迫切需要覆盖。
答案 1 :(得分:1)
在某些情况下它绝对有效。假设您有一个Person
类和一个Company
类,它们具有公共属性streetNumber
,streetName
,postcode
等等。创建一个名为Address
的新模型类,Person
和Company
都包含。在这种情况下,继承是完全错误的方式。
答案 2 :(得分:1)
您正在查看的是创建Aggregate Root。 Domain 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教程有一些很好的例子。看看你是否可以。