接口的本质
接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:
interface InterfaceName
{
void method1();
void method2( int para1);
void method3( string para2, string para3);
}
面向接口编程的本质:
1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界 “ 如果你是 …… 则必须能 ……” 的理念。
如果你是人,就必须能思考、能吃饭
2)接口是在一定粒度视图上同类事物的抽象表示。注意这里我强调了在一定粒度视图上,因为 “ 同类事物 ” 这个概念是相对的,它因为粒度视图不同而不同。
“面向接口编程 ” 中的接口是一种思想层面的用于实现多态性、提高软件灵活性和可维护性的架构部件,而具体语言中的 “ 接口 ” 是将这种思想中的部件具体实施到代码里的手段。
在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类
抽象类和接口的区别在于使用动机。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性
接口和抽象类的另一个区别在于,抽象类和它的子类之间应该是一般和特殊的关系,而接口仅仅是它的子类应该实现的一组规则。
接口除了以上为声明的意义;
下面给出一个使用建议:
如果是函数参数、返回值或成员变量,使用接口类型声明引用就不会被具体实现所限制,便于扩展。