C#应该设计基类还是接口
1.IS-A关系和CAN-DO关系
IS-A关系:属于关系,继承基类的多个类之间有不少能共享的方法,
比如:客车类型属于车辆类型;
Can-do关系:指“能做某事”,继承接口的多个类之间没有多少能共享的代码。
如果派生类型和基类型建立不起IS-A关系,就不用基类而用接口,设计接口就是在定义协定
2.易用性
定义从基类派生的新类型通常比实现接口里的所有方法容易很多,因为基类提供了大量功能,所以派生类型只需要稍微改动
3.版本控制
向接口添加新方法。会强迫接口的所有继承者都必须更改其源代码来实现该新方法,而面向基类中添加新方法。部分子类就不用更改源代码。
当我们设计一个类时,首先要规划这个类主要是干什么用的,并且对外要放出哪些接口。这时就要设计这个类的对外接口都有哪些了。在进行多层次开发的时候,由于下层对上层是透明的,上层无须知道下层的操作方式以及代码,因此我主张层与层之间的交互主要靠的是接口。尽量不要用类。下面的代码是设计的接口,类,以及其他的层的调用。