程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java設計形式以外不雅形式(Facade形式)引見

Java設計形式以外不雅形式(Facade形式)引見

編輯:關於JAVA

Java設計形式以外不雅形式(Facade形式)引見。本站提示廣大學習愛好者:(Java設計形式以外不雅形式(Facade形式)引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Java設計形式以外不雅形式(Facade形式)引見正文


外不雅形式(Facade)的界說:為子體系中的一組接口供給一個分歧的界面。

Facade一個典范運用就是數據庫JDBC的運用,以下例對數據庫的操作:

public class DBCompare {
 Connection conn = null;
 PreparedStatement prep = null;
 ResultSet rset = null;
 try {
  Class.forName( "<driver>" ).newInstance();
  conn = DriverManager.getConnection( "<database>" );
    
  String sql = "SELECT * FROM <table> WHERE <column name> = ?";
  prep = conn.prepareStatement( sql );
     prep.setString( 1, "<column value>" );
  rset = prep.executeQuery();
  if( rset.next() ) {
    System.out.println( rset.getString( "<column name" ) );
  }
 } catch( SException e ) {
  e.printStackTrace();
 } finally {
  rset.close();
  prep.close();
  conn.close();
 }
}

上例是Jsp中最平日的對數據庫操作方法。

在運用中,常常須要對數據庫操作,每次都寫上述一段代碼確定比擬費事,須要將個中不變的部門提煉出來,做成一個接口,這就引入了facade外不雅對象。假如今後我們改換Class.forName中的<driver>也異常便利,好比從Mysql數據庫換到Oracle數據庫,只需改換facade接口中的driver便可以。

我們做成了一個Facade接口,應用該接口,上例中的法式便可以更改以下:

public class DBCompare {
 String sql = "SELECT * FROM <table> WHERE <column name> = ?";  
 try {
  Mysql msql=new mysql(sql);
  prep.setString( 1, "<column value>" );
  rset = prep.executeQuery();
  if( rset.next() ) {
   System.out.println( rset.getString( "<column name" ) );
  }
 } catch( SException e ) {
  e.printStackTrace();
 } finally {
  mysql.close();
  mysql=null;
 }
}

可見異常簡略,一切法式對數據庫拜訪都是應用改接口,下降體系的龐雜性,增長了靈巧性。

假如我們要應用銜接池,也只需針對facade接口修正便可以。

由上圖可以看出,facade現實上是個理順體系間關系,下降體系間耦合度的一個經常使用的方法,或許你曾經不知不覺在應用,雖然不曉得它就是facade。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved