小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

設(shè)計(jì)模式之Facade(外觀 總管 Manager)

 HaiLan 2006-09-14

設(shè)計(jì)模式之Facade(外觀 總管 Manager)

板橋里人 http://www. 2002/4/6/(轉(zhuǎn)載請(qǐng)保留)

模式實(shí)戰(zhàn)書籍《Java實(shí)用系統(tǒng)開發(fā)指南》

Facade模式的定義: 為子系統(tǒng)中的一組接口提供一個(gè)一致的界面.

Facade一個(gè)典型應(yīng)用就是數(shù)據(jù)庫JDBC的應(yīng)用,如下例對(duì)數(shù)據(jù)庫的操作:

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中最通常的對(duì)數(shù)據(jù)庫操作辦法.

在應(yīng)用中,經(jīng)常需要對(duì)數(shù)據(jù)庫操作,每次都寫上述一段代碼肯定比較麻煩,需要將其中不變的部分提煉出來,做成一個(gè)接口,這就引入了facade外觀對(duì)象.如果以后我們更換Class.forName中的<driver>也非常方便,比如從Mysql數(shù)據(jù)庫換到Oracle數(shù)據(jù)庫,只要更換facade接口中的driver就可以.

我們做成了一個(gè)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;
  }
}

可見非常簡(jiǎn)單,所有程序?qū)?shù)據(jù)庫訪問都是使用改接口,降低系統(tǒng)的復(fù)雜性,增加了靈活性.

如果我們要使用連接池,也只要針對(duì)facade接口修改就可以.

 

由上圖可以看出, facade實(shí)際上是個(gè)理順系統(tǒng)間關(guān)系,降低系統(tǒng)間耦合度的一個(gè)常用的辦法,也許你已經(jīng)不知不覺在使用,盡管不知道它就是facade.

 

設(shè)計(jì)模式如何在具體項(xiàng)目中應(yīng)用見《Java實(shí)用系統(tǒng)開發(fā)指南》

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多