C#应该设计基类还是接口

设计规范:
1.IS-A关系和CAN-DO关系
IS-A关系:“属于”关系,继承基类的多个类之间有不少能共享的代码,比如:客车类型属于车辆类型;CAN-DO关系:指“能做某事”,继承接口的多个类之间没有多少能共享的代码。
如果派生类型和基类型建立不起IS-A关系,就不用基类而用接口,设计接口 就是在 定义协定。
2.易用性
定义从基类派生的新类型通常比实现接口里的所有方法容易很多,因为基类提供了大量功能,所以派生类型只需要稍微改动。
3.版本控制
向接口添加新方法,会强迫接口的所有继承者都必须更改其源代码来实现该新方法;而向基类中添加新方法,部分子类就不用更改源代码。

基类举例:
以Microsoft Windows窗体控件类为例:Button、CheckBox和其他所有窗体控件派生类都从System.Windows.Forms.Control窗体控件基类派生,再简单改下派生类的代码就可以了。

接口举例:
System.Collections.Generic命名空间里定义了几个与集合有关的接口:IList<T>, ICollection<T>, IEnumerable<T>,IDictionary<T>,然后,有大量类来实现这些接口的多种组合,包括:IList<T>, Dictionary<TKey, TValue>, Queue<T>, Stack<T>等集合类。这些类和这些接口之间是CAN-DO关系, 可理解为:IList<T>, Dictionary<TKey, TValue>, Queue<T>, Stack<T>等集合类之间没有多少能共享的代码。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值