那既然这样,就说明接口的设计目的根本不是这个,简单来说就是,让程序好扩展。
现在的软件,越做越大,设计就更困难,所以各个模块之间要分工明确,那样才能健壮并且容易扩展,
那么,接口就很好的做到了这一点,那么,怎么样设计才能让软件充分利用接口好扩展的这个作用呢,那就是面向接口编程
下面给大家一个示例,这个例子主要讲解了在连接数据库的一种设计模式:
说先定义一个接口,代码如下:
public interface IDataBase { //仅仅是个很简单的接口
public Connection dataBaseConnection();}
下面再给大家做两个实现类:
public class SqlDataBase implements IDataBase{ //这个类主要用来实现连接sql数据库的作用
public Connection dataBaseConnection() {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:odbc:student","username","password");
return con;}}
class OracleDataBase implements IDataBase{ //这个类用来实现连接oracle数据库的作用
public Connection dataBaseConnection() {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:student","username","password");
return con;}}
class DB2DataBase implements IDataBase{ //这个类用来实现连接DB2数据库的作用
public Connection dataBaseConnection() {
Class.forName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
Connection con=DriverManager.getConnection("jdbc:db2//localhost/student","username","password");
return con;}}
我们定义一个业务类:GetConnection类
public class GetConnection{
private IDataBase iDataBase=null; //这个业务类就是用来连接各种数据库的作用,只要将实现类的对象传递给这个类的构造函数,就能实现连接数据库的功能了
public GetConnection(IDataBase iDataBase){
this.iDataBase=iDataBase;
}
public Connection getConnect(){
return iDataBase.dataBaseConnection();}}
public class TestCase { //测试类
public static void main(String[] args){
GetConnection getConnection=new GetConnection(new OracleDataBase());
Connection con=getConnection.getConnect();}}