<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    設計模式學習筆記(八)—Template Method模式

    Posted on 2007-11-28 20:36 flustar 閱讀(984) 評論(0)  編輯  收藏 所屬分類: Design Patterns

     《設計模式》一書對Template Method模式是這樣描述的:
     定義一個操作中算法的骨架,而將一些步驟延遲到子類中。不改變算法的結構而重新定義它的步驟。
     我的理解:定義一個抽象類或者說接口,在它的內部定義一些抽象的方法(供TemplateMethod調用的步驟)和一個TemplateMethod方法(非抽象方法),封裝了這些抽象方法的接口或抽象類就是骨架。而將它的實現延遲到子類中,也就是用子類實現它。不改變算法的結構而重新定義它的步驟,也就是改寫或者實現父類的這些非TemplateMethod的抽象方法。下面給出一個例子:
    abstract class QueryTemplate{
     public void doQuery(){  //Template Method
      formatConnect();
      formatSelect();
     }
      protected abstract void formatConnect();
      protected abstract void formatSelect();
    }
    class OracleQT extends QueryTemplate{
     public void formatConnect() {
      System.out.println("格式化Qracle數據庫連接");
     }
     public void formatSelect() {
      System.out.println("格式化Oracle數據庫查詢");
     }
    }
    class MysqlQT extends QueryTemplate{
     public void formatConnect() {
      System.out.println("格式化Mysql數據庫連接");
     }
     public void formatSelect() {
      System.out.println("格式化Mysql數據庫查詢");
     }
    }
    public class client {
     public static void main(String[] args) {
      QueryTemplate oracleQT=new OracleQT();
      oracleQT.doQuery();
      
      QueryTemplate mysqlQT=new MysqlQT();
      mysqlQT.doQuery();
     }
    }
    輸出結果:
    格式化Qracle數據庫連接
    格式化Oracle數據庫查詢
    格式化Mysql數據庫連接
    格式化Mysql數據庫查詢
    在這個例子中,我們定義了一個骨架QueryTemplate,在它的內部定義了一個Template Method,和一些步驟(抽象方法),使用Template Method來調用這些步驟。步驟是在子類中實現的。
    小結:有時候,會遇到由一系列步驟構成的過程需要執行。這個過程從高層次上看是相同的,但有些步驟的實現可能不同。正如,查詢SQL數據庫從高層次上看過程是相同的,但某些細節比如如何連接數據庫則可能因平臺等細節的不同而不同。通過Template Method模式,我們可以先定義步驟序列,然后覆蓋那些需要改變的步驟。

     

    posts - 146, comments - 143, trackbacks - 0, articles - 0

    Copyright © flustar

    主站蜘蛛池模板: 国产免费人成视频在线观看| 成人免费福利电影| 亚洲免费在线观看视频| av网站免费线看| 亚洲精品成a人在线观看| 色屁屁在线观看视频免费| 成人免费视频国产| 国产精品亚洲精品日韩动图| 国产免费人人看大香伊| 美女视频免费看一区二区| 全部免费毛片免费播放| 一级做受视频免费是看美女| 久久亚洲中文字幕精品一区| 中文字幕视频免费在线观看| 亚洲AV永久无码精品成人 | 人妻巨大乳hd免费看| 久久国产成人精品国产成人亚洲| 黄视频在线观看免费| 亚洲av一综合av一区| 亚洲香蕉免费有线视频| 亚洲人成77777在线播放网站不卡| 我要看免费的毛片| 日亚毛片免费乱码不卡一区| 亚洲乱码一区二区三区在线观看| 无码中文字幕av免费放dvd| 亚洲欧洲另类春色校园小说| 四虎影视www四虎免费| 一级毛片a免费播放王色电影| 亚洲色中文字幕无码AV| 四虎在线免费视频| 国产亚洲人成在线播放| 亚洲精品一品区二品区三品区| 久久久久久精品免费免费自慰| 亚洲精品无码久久久久APP| 国产成人毛片亚洲精品| 1000部拍拍拍18免费网站| 色婷婷精品免费视频| 亚洲av色福利天堂| 宅男666在线永久免费观看| 丁香花在线观看免费观看图片| 亚洲精品中文字幕无码AV|