小编典典

接口还是抽象类?

c#

对于我的新Pet-Project,我有一个设计问题,已经确定,但是我也希望对此有其他意见。

我有两个类(简化):

class MyObject
{
  string name {get;set;}
  enum relation {get;set;}
  int value {get;set;}
}

class MyObjectGroup
{
  string name {get;set;}
  enum relation {get;set;}
  int value {get;set;}
  List<MyObject> myobjects {get;set;}
}

在项目后期MyObjectGroup,并MyObject应同等地使用。为此,我可以采取两种方式:

  • 创建一个接口: IObject
  • 创建一个抽象类: ObjectBase

我决定采用该接口的方式,以后我在代码中不必ObjectBase每次都写,IObject只是为了简单起见-但是这种方式的其他优点是什么?

其次,如何添加IXmlSerializable整个故事呢?让接口从抽象基类继承IXmlSerializable还是要IXmlSerializable在抽象基类中实现更多肯定?


阅读 245

收藏
2020-05-19

共1个答案

小编典典

一般来说,我在这种情况下使用的方法是同时具有接口和抽象类。接口定义了接口。抽象类仅仅是一个助手。

这种方法真的不会出错。接口使您可以灵活地更改实施。抽象类为您提供了不必强制使用的样板代码和帮助程序代码,否则,如果您的方法是根据抽象类显式定义的,则这些代码就可以使用。

2020-05-19