面向接口编程

来源:互联网 发布:校园网络需求验证 编辑:程序博客网 时间:2024/04/28 09:39

        对于我们来说或许听到更多的是面向对象编程,这里说到了面向接口编程并不是和面向对象编程并驾齐驱一种编程思想体系,更确切的说,面向接口编程知识面向对象体系的一部分思想精髓.

        接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现。它在形式上可能是如下的样子:

interface InterfaceName

{

    int Method1();

    string Method2(int para1);

    voidMethod3(string para2,string para3);

}

那么,接口的本质是什么呢?或者说接口存在的意义是什么。

    首先接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了“如果你是……则必须能……”

例如,人都能呼吸,即“如果你是人,则必须能呼吸”。那么模拟到计算机程序中,就应该有一个IPerson接口,并有一个方法叫Breath(),然后我们规定,每一个表示“人”的类,必须实现IPerson接口,这就“如果你是人,则必须能呼吸”这条规则。

    其次接口是在一定粒度视图上同类事物的抽象表示。

    例如:在我们眼中我和身边的同事是同类,我们有能有共同的接口,但是在动物学家眼中,我们和狗是同类,都是动物,拥有共同的接口规则,而在生物学家眼中我们又和花花草草的同类,我们又共同的接口规则.说白了这些就是在某个粒度视图层面上对同类事物不加区别的对待而统一处理。而之所以敢这样做,就是因为有接口的存在

    最后那到底什么是接口编程呢?我觉得:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。

      这样做的好处是显而易见的,首先对系统灵活性大有好处。当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改。甚至可以在不改动上层代码时将下层整个替换掉,就像我们将一个2G内存条换成一个4G,计算机其他地方不用做任何改动,而是把原来内存条拔下来、新内存条插上就行了,因为计算机其他部分不依赖具体内存,而只依赖一个IDE接口,只要内存条实现了这个接口,就可以替换上去。从这里看,程序中的接口和现实中的接口极为相似,所以我一直认为,接口(interface)这个词用的真是神似!

      使用接口的另一个好处就是不同部件或层次的开发人员可以并行开工,就像造内存的不用等造CPU的,也不用等造显示器的,只要接口一致,设计合理,完全可以并行进行开发,从而提高效率。

0 0
原创粉丝点击