最近在重构老项目,其中使用了很多接口,达到了项目中业务逻辑层次结构清晰,解耦,在此,总结一下对JAVA接口理解的心得。
引言
一. 什么叫接口
接口(Interface),学习JAVA的人都知道,是由几个方法组成的集合,可以被其他的类继承,实现
例子:
interface Test {
void A();
void B(String parmse);
...
}
二.接口的作用及本质
(1)接口是一组规则集合,它规定了实现它的一系列类所共有的规范
举例说明:
在真实生活中,人必须要睡觉。那么联系到程序中的时间,就是:
人-------->Person.Interface;
睡觉----->Sleep();
那么就是,所有的表示人的类都要去实现Person这个接口,调用Sleep()方法,
这就对应了真实世界中的“如果你是人,那么你就要睡觉”这个规则。
由此可以关联:面向对象的思想之一,就是模拟真实世界,把真实世界中的事件抽象成类,在程序中,每个类的实例相互协调,相互的交互通信,这很符合现实生活中的事例,这也是面向对象思想的精髓
(2)接口是一定的角度下同类事例的抽象表达
举例说明:
1)在真实的世界中,人和动物本不是相同的,但是如果在动物学砖家的眼中,人和动物就是同一类,因为他们都同属于Animal
2) 在真实的世界中,人和动物属于同类已经很蛋疼了,那么如何和小强,蚯蚓,细菌。。。是否也能够等同于同类呢?答案是肯定的,在生物学砖家眼中,人和小强,蚯蚓。。。都具有遗传特征。
以上两个例子充分的说明了接口存在的意义,他再一次体现了面向对象思想中的多态性,由此,我们可以把这种思考叫做面向接口思想。
面向接口属于面对对象,他是面向对象思想的核心之一。
面向接口
上面从真实世界中去转化了面对接口思路的实例,那么,在编程中,面向接口又是怎么样的?
一. 定义
个人见解:在面对系统及程序框架中,为了分层以及一些业务的依赖关系,我们通过定义一组组接口,向上层提供接口功能,而上层对于下层也仅仅是依赖提供的接口,不会去依赖具体的功能实现类。
二. 功能作用
1) 使用面向接口编程,提供了极大的灵活性,当下层需要去改变需求的时候,只要保证接口及接口中不变,
完全不用考虑是修改上层代码,甚至于可以全部修改下层。(目前的MVP也是一种面向接口的编码思想(个人见解))
2) 由于不用考虑下层,上层功能可以各自开发自己的,完全互不影响,提供效率。
总结:
在实际的开发中,灵活的使用接口,确实可以给我们的程序开发带来便利,它是面向对象思想的一种具体化诠释。
$(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
').text(i)); }; $numbering.fadeIn(1700); }); });