我的申请主要由广告系列组成。它们是我模型的主要对象。 我有两种类型的广告系列:
这两者之间存在共享属性,并且存在特定于每个属性的属性。设计此数据模型的最佳方法是什么? Interfaces
或Abstract classes
?
我们假设两种类型的广告系列都可以包含 Id 和名称,并且:
DataTable
名为收件人 List<DateTime>
名为日程表 如果您非常友好,不要对我投反对票或要求关闭此问题,请提供您推荐型号的基本结构,包括access modifiers
和abstract/virtual
或其他关键字帮助我为我的模型提供更好的结构。
答案 0 :(得分:2)
如果没有很好地理解你正在做的事情,很难回答这个问题,而且不幸的是基于意见。
然而,在非常简单的层面上,如果使用接口,则通常必须在实现属性(方法,属性等)之间复制代码。基类为它们提供此功能。出于这个原因,我经常使用基类,除非接口更合适的具体原因。
我建议不同类型的广告系列本质上都是广告系列,因此有一个基类。然而,他们将针对不同的实体(人,慈善机构,公司),这些实体都需要联系他们的方式(电子邮件/电话/地址)我建议这些不相关的实体(超出他们可以成为竞选对象的事实) )是何时使用接口的更好例子。
但是,您需要考虑要覆盖哪些方法以及哪种方法更清晰。
答案 1 :(得分:1)
一般来说,如果他们共享共同的行为(代码),那么该代码应该存在于抽象类中。如果他们执行相同的角色,请将它们放在界面后面。
在你的情况下,你似乎有两个共享属性,这两个属性都是一个简单的值,它并没有真正定义行为,所以只是基于那些我只想用于接口的属性。
如果您决定创建一个抽象类(可能有两种类型的代码都要共享),您仍然可以保留该接口。有一天,您可能会有第三种不与其他类型共享行为的广告系列类型(因此不会实现相同的抽象类),但会执行相同的角色(因此实现相同的界面)。
对于抽象类中的访问修饰符,如果两个类只共享两个属性,则只需在没有abstract
或virtual
关键字的抽象类中定义它们。