对于我的新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应同等地使用。为此,我可以采取两种方式:
MyObjectGroup
MyObject
IObject
ObjectBase
我决定采用该接口的方式,以后我在代码中不必ObjectBase每次都写,IObject只是为了简单起见-但是这种方式的其他优点是什么?
其次,如何添加IXmlSerializable整个故事呢?让接口从抽象基类继承IXmlSerializable还是要IXmlSerializable在抽象基类中实现更多肯定?
IXmlSerializable
一般来说,我在这种情况下使用的方法是同时具有接口和抽象类。接口定义了接口。抽象类仅仅是一个助手。
这种方法真的不会出错。接口使您可以灵活地更改实施。抽象类为您提供了不必强制使用的样板代码和帮助程序代码,否则,如果您的方法是根据抽象类显式定义的,则这些代码就可以使用。