1,面向接口编程和面向对象编程是什么关系?
首先,面向接口编程和面向对象编程并不是平级的,
它并不是比面向对象编程更先进的一种独立的编程思想,
而是附属于面向对象思想体系,属于其一部分。或者说,
它是面向对象编程体系中的思想精髓之一。
2.接口的本质
接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,
可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:
interface InterfaceName
{
void Method1();
void Method2(int para1);
void Method3(string para2,string para3);
}
接口的本质是什么呢?
1) 接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。
体现了自然界“如果你是……则必须能……”的理念。
2) 接口是在一定粒度视图上同类事物的抽象表示。
注意这里我强调了在一定粒度视图上,因为“同类事物”这个概念是相对的,
它因为粒度视图不同而不同。
3.面向接口编程综述
什么是面向接口编程呢?
在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),
而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。
这样做的好处是显而易见的,首先对系统灵活性大有好处。当下层需要改变时,只要接口及接口功能不变,
则上层不用做任何修改。甚至可以在不改动上层代码时将下层整个替换掉,
就像我们将一个WD的60G硬盘换成一个希捷的160G的硬盘,计算机其他地方不用做任何改动,
而是把原硬盘拔下来、新硬盘插上就行了,因为计算机其他部分不依赖具体硬盘,而只依赖一个IDE接口,
只要硬盘实现了这个接口,就可以替换上去。从这里看,程序中的接口和现实中的接口极为相似,
所以我一直认为,接口(interface)这个词用的真是神似!
使用接口的另一个好处就是不同部件或层次的开发人员可以并行开工,
就像造硬盘的不用等造CPU的,也不用等造显示器的,只要接口一致,设计合理,完全可以并行进行开发,从而提高效率。
|