什么是面向接口编程呢?我我的的定义是:在系统分析和架构中,分清层次和依赖关系,每一个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是经过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。html
这样作的好处是显而易见的,首先对系统灵活性大有好处。当下层须要改变时,只要接口及接口功能不变,则上层不用作任何修改。甚至能够在不改动上层代码时将下层整个替换掉,就像咱们将一个WD的60G硬盘换成一个希捷的160G的硬盘,计算机其余地方不用作任何改动,而是把原硬盘拔下来、新硬盘插上就好了,由于计算机其余部分不依赖具体硬盘,而只依赖一个IDE接口,只要硬盘实现了这个接口,就能够替换上去。从这里看,程序中的接口和现实中的接口极为类似,因此我一直认为,接口(interface)这个词用的真是神似!编程
使用接口的另外一个好处就是不一样部件或层次的开发人员能够并行开工,就像造硬盘的不用等造CPU的,也不用等造显示器的,只要接口一致,设计合理,彻底能够并行进行开发,从而提升效率。架构
面向接口编程的好处是,实现代码依赖接口,而不依赖具体的实现类,方便程序的扩展。.net
抽象类和接口的区别在于使用动机。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。设计
参考文章:htm