我有几个问题需要明智的人员参与面向对象设计的接口和抽象基类。考虑以下情况:面向对象 - 何处放置此接口声明
我有一个抽象低音类“DataObjectBase”和派生类“UserDataObject”。我也有一个接口“IDataObject”。当然接口暴露了我的数据对象必须公开的所有公共方法和属性,并且您可能猜测抽象基础实现了所有数据对象通用的方法和属性。
我的问题是,如果抽象低音类DataObjectBase实现接口IDataObject中指定的所有内容,是否应该在基类或派生类上声明接口?
在基类中声明的C#接口隐式应用于派生类,但这是最佳实践吗?在我看来,在基类上实现接口使派生类实现接口变得不那么明显,但是接着又要求为每个派生类指定接口。
此外,如果基类不是抽象的,那么这个建议是否会改变?
第二个子问题:如果基类实现了IDataObject接口的所有方法/属性,那么接口是否需要?基类类型名称可以简单地用来代替接口名称,即:
private DataObjectBase _dataObject;
private IDataObject _dataObject;
在上面的示例中(基地再次实现接口公开的所有内容)都可以分配相同的派生类型。就我个人而言,我总是在这些情况下使用界面,但我对于听取人们的想法感兴趣。
在此先感谢。