接口作用:
- 解决java不能多继承,用过接口变相实现多继承。
- 屏蔽实现的不同的差异
接口实例
现在假如说,java想让oracle和mysql实现自己的数据源和关闭数据源,java只需要做一个接口interface出来。而oracle和mysql自己去实现这个接口即可。
ok
下面先上一个组织结构,需要用到工厂模式。
总共三个包,分别是
- 接口包 com.rs.biz
- 工厂包com.rs.factory
- 实现类com.rs.impl
最后一个是测试类。
第二步,开始写接口DateBase.java。
package com.rs.biz;
import java.sql.Connection;
public interface DateBase {
//定义两个方法
Connection getConnection(String url,String user,String password);
void closed();
}
第三步,写实现类
Mysql.java
--------------------------------------------------------------
package com.rs.impl;
import java.sql.Connection;
import com.rs.biz.DateBase;
public class Mysql implements DateBase {
@Override
public Connection getConnection(String url, String user, String password) {
System.out.println("我是mysql厂商实现的返回connection");
return null;
}
@Override
public void closed() {
System.out.println("Mysql数据库connection关闭");
}
}
--------------------------------------------------------------
Oracle.java
--------------------------------------------------------------
package com.rs.impl;
import java.sql.Connection;
import com.rs.biz.DateBase;
public class Oracle implements DateBase {
@Override
public Connection getConnection(String url, String user, String password) {
System.out.println("我是Oracle厂商实现的返回connection");
return null;
}
@Override
public void closed() {
System.out.println("Oracle数据库connection关闭");
}
}
ok,基本功已经做完了,现在开始思考接口的作用,既然接口是为了屏蔽不同类的差异性的,那么我们需要一个工厂类,用来返回你想要的结果,是oracle还是mysql的,此时我们开始编写工厂类。
--------------------------------------------------------------
DbFactory.java
--------------------------------------------------------------
package com.rs.factory;
import com.rs.biz.DateBase;
import com.rs.impl.Mysql;
import com.rs.impl.Oracle;
public class DbFactory {
public static DateBase getConnection(DateBase db){
return db;//通过传入的db类型,返回不同的类。这些类都是实现了接口DateBase的类
}
}
--------------------------------------------------------------
好了,下面我们开始写测试类TestDateBase.java
--------------------------------------------------------------
packagetest.com.rs;
importcom.rs.biz.DateBase;
importcom.rs.factory.DbFactory;
importcom.rs.impl.Mysql;
importcom.rs.impl.Oracle;
public classTestDateBase {
public static voidmain(String[] args) {
String url = "";
String user = "";
String password = "";
DateBase db = newDbFactory().getConnection(newOracle());
db.getConnection(url, user, password);
db.closed();
DateBase db2 = newDbFactory().getConnection(newMysql());
db2.getConnection(url, user, password);
db2.closed();
}
}
--------------------------------------------------
打印输出
我是Oracle厂商实现的返回connection
Oracle数据库connection关闭
我是mysql厂商实现的返回connection
Mysql数据库connection关闭
--------------------------------------------------------------------
讲解结束,理解这段代码后,你可以更改一下你的工厂类,将获得连接那个方法更改为用户不可见,自己设计好,或者从一个配置文件读出。
如有不懂的 可以联系小弟,我们一起进步,QQ 394263788 转载请说明,写文章的不多了。