ITEEDU

java接口

站长原创,版权所有ITEEDU,2009-9-30

接口是最高层次的抽象,只定义了提供的功能,人们遵循的法则,离了变和不变,让人们按同一轨迹行事。接口的强制性表现在实现接口时,必实现其所有接口,哪怕做一个空的也要写。

定义一种规范,一种对外提供的功能。

约束人们的行为。

接口的作用:

为用户提供统一的操作界面。

屏蔽了底层的不同的具体的复杂的实现。

防止底层的各种变动(优化,整体变革)对高层(应用接口的那层)的影响。

方便了多态的实现。

接口不可以有实例,但可以有引用。new Yyy()出的是实例,Xxx name得到的是引用。

接口的引用可以指向任何一个实现现了它的类实例。

例子:

JDBC

各大数据库厂商和SUN公司制定的JDBC规范只是一系列java接口。实现由厂商自己编制驱动包。

java.sql包中提供的只是接口和一些不常用的类(除了DriverManager类)。

DriverManager为一个工厂类,提供的各用方法,最重要的是getConnection()。

DriverManager会根据载入的不同的驱动创建连接。

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn =DriverManager.getConnection("jdbc:odbc:grade");

Statement stmt =conn.createStatement();

ResultSet rs =stmt.executeQuery("SELECT * FROM grade");

上述左端的为创建的引用,右端为驱动包中具体类创建的实例。

*任何类型(关系,面向对象,XML,树状,层次),任何厂商(MYSQL,DB2,ORICAL…)的数据库只要实现了jdbc的接口,就可以用java调用。就算将来数据库由关系型变革到面向对象型或XML,用通过JDBC调用数据库的程序一点也不用变。

*这就是规范的力量。

Servlet

javax.servlet由一部分接口和一部分类组成。和具体协议无关的部分用接口实现(即所有协议都要有的),一些和协议无关(都要有的)或很繁琐的基础方法由一些类来实现。

javax.servlet.http中的接口的类大多继承自javax.servlet添加了一些和http协议相关的部分。

*这些规范是为Servlet容器定置的,如何实现由不同的窗口而异,如Tomcat和Jboss等。

*这就是分离变与不变的力量。

编程规范:

先用接口定义程序对外提供的接口和功能,再用具体的类实现。

这样从细节中摆脱出来,只关注高层的抽象,是一用很好的设计方法。

在极端情况下,类里的public方法都是继承自接口的实现。

类里的public方法即类的对象可为外部提供的功能接口。