最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設(shè)計模式之外觀模式(Facade模式)介紹

 更新時間:2015年03月11日 09:54:29   投稿:junjie  
這篇文章主要介紹了Java設(shè)計模式之外觀模式(Facade模式)介紹,外觀模式(Facade)的定義:為子系統(tǒng)中的一組接口提供一個一致的界面,需要的朋友可以參考下

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

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

復(fù)制代碼 代碼如下:

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

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

我們做成了一個Facade接口,使用該接口,上例中的程序就可以更改如下:

復(fù)制代碼 代碼如下:

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;
 }
}

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

如果我們要使用連接池,也只要針對facade接口修改就可以。

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

相關(guān)文章

  • java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    java基本教程之Thread中start()和run()的區(qū)別 java多線程教程

    這篇文章主要介紹了Thread中start()和run()的區(qū)別,Thread類包含start()和run()方法,它們的區(qū)別是什么?下面將對此作出解答
    2014-01-01
  • Java創(chuàng)建ZIP壓縮文件的方法

    Java創(chuàng)建ZIP壓縮文件的方法

    這篇文章主要介紹了Java創(chuàng)建ZIP壓縮文件的方法,實例分析了java創(chuàng)建zip文件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 使用Spring Data Redis實現(xiàn)數(shù)據(jù)緩存的方法

    使用Spring Data Redis實現(xiàn)數(shù)據(jù)緩存的方法

    目前在系統(tǒng)架構(gòu)設(shè)計中使用Redis實現(xiàn)緩存,這篇文章主要介紹了使用Spring Data Redis實現(xiàn)數(shù)據(jù)緩存的方法,具有一定的參考價值,需要的朋友可以參考下
    2018-11-11
  • SpringBatch跳過異常和限制方式

    SpringBatch跳過異常和限制方式

    這篇文章主要介紹了SpringBatch跳過異常和限制方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 探究springboot中的TomcatMetricsBinder

    探究springboot中的TomcatMetricsBinder

    springboot的TomcatMetricsBinder主要是接收ApplicationStartedEvent然后創(chuàng)建TomcatMetrics執(zhí)行bindTo進行注冊,TomcatMetrics主要注冊了globalRequest、servlet、cache、threadPool、session相關(guān)的指標,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2023-11-11
  • JavaWeb實現(xiàn)文件上傳下載功能實例解析

    JavaWeb實現(xiàn)文件上傳下載功能實例解析

    這篇文章主要為大家詳細介紹了JavaWeb中的文件上傳和下載功能的實現(xiàn),在Web應(yīng)用系統(tǒng)開發(fā)中,文件上傳和下載功能是非常常用的功能,需要的朋友可以參考下
    2015-08-08
  • 淺析Hadoop完全分布式集群搭建問題

    淺析Hadoop完全分布式集群搭建問題

    Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。本文重點給大家介紹Hadoop完全分布式集群搭建問題,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Java并發(fā)之串行線程池實例解析

    Java并發(fā)之串行線程池實例解析

    這篇文章主要介紹了Java并發(fā)之串行線程池實例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 基于Java實現(xiàn)獲取本地IP地址和主機名

    基于Java實現(xiàn)獲取本地IP地址和主機名

    這篇文章主要介紹了基于Java實現(xiàn)獲取本地IP地址和主機名,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Javafx簡單實現(xiàn)【我的電腦資源管理器】效果

    Javafx簡單實現(xiàn)【我的電腦資源管理器】效果

    這篇文章主要介紹了Javafx簡單實現(xiàn)【我的電腦資源管理器】效果,涉及Javafx操作系統(tǒng)文件模擬資源管理器的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09

最新評論

黎川县| 浑源县| 饶平县| 西畴县| 项城市| 团风县| 鹿邑县| 金阳县| 文化| 申扎县| 灵台县| 惠来县| 凤庆县| 镶黄旗| 常山县| 东兰县| 韶山市| 银川市| 明水县| 扎兰屯市| 峨边| 青浦区| 揭东县| 清新县| 河南省| 远安县| 阆中市| 瑞昌市| 巴东县| 罗江县| 平果县| 德安县| 左贡县| 南郑县| 余干县| 镇沅| 瑞昌市| 昌江| 桑日县| 靖宇县| 施秉县|