實例講解Java中的接口的作用

[摘要] 接口的作用簡單一點就是:接口是用來標記類的,不同的類屬於不同的接口(通過向上轉型),管理接口比管理各種各樣的類方便多了,接口體現了抽象的觀點,什麼是抽象?抽象就是"抽去像的部分"。
  接口的作用

  接口的作用簡單一點就是:接口是用來標記類的,不同的類屬於不同的接口(通過向上轉型),管理接口比管理各種各樣的類方便多了,接口體現了抽象的觀點,什麼是抽象?抽象就是"抽去像的部分"。

  使用接口解決問題

  問題:現在我們要寫個連接數據庫的類給用戶使用,有兩個函數:一個返回Connection對象,另一個是關閉數據庫,close(),一般的解決方法是:給每個數據庫寫一個類,再根據用戶使用的數據庫決定使用具體的類。

  好的,我們看看這樣有什麼不好之處:

  (1).首先每個類都要有重複的代碼,造成代碼的膨脹;

  (2).其次最重要的是我們並不知道用戶使用什麼數據庫,可能是Oracle,可能是mysql,也可能是sqlserver等,這個問題很難解決。

  解決方案:

  首先我們定義接口:

  public interface DataBase

  {

  java.sql.Connection openDB(String url,String user,String password);

  void close();

  }

  我們定義了兩個方法,openDB返回Connection對象,close()關閉數據庫;

  具體的實現在實現DataBase接口的類中;

  下面看看實現:

  import java.sql.*;

  public class Mysql implements DataBase

  {

  private String url=”jdbc:mysql:localhost:3306/test”;

  private String user=”root”;

  private String password=””;

  private Connection conn;

  public Connection openDB(url,user,password)

  {

  //連接數據庫的代碼

  }

  public void close()

  {

  //關閉數據庫

  }

  }

  類mysql實現了DataBase接口,下面還有實現了DataBase接口的oraclesql等類;

  這些類都歸於DataBase接口了,如何在應用程序中使用呢?

  我們要定義DataBase對象 myDB,通過myDB來操縱數據庫,可以不要分清是哪個類了。

  另外的問題:Java中不許我們實例化接口,如DataBase myDB=new DataBase();

  我們只能myDB=new Mysql()或者myDB=new Oracle()。這樣我們還必須指定實例化哪個對象,好像前面的努力都白費了啊!!那怎麼辦呢,我們需要一個工廠:

  public class DBFactory

  {

  public static DataBase Connection getConn()

  {

  Return(new Mysql());

  }

  }

  實例化的代碼變成:myDB=DBFactory.getConn();

  整個過程中接口不負責任何具體操作,其他的程序要連接數據庫的話,只需要構造一個DB對象就OK,而不管工廠類如何變化。這就是接口的意義----抽象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章