青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

設計模式之template method模式

算法意圖:

將算法骨架定義在父類當中,具體的實現放到子類當中。Template method可以不改變算法的骨架在子類中重新定義算法中的某些特定的步驟。

算法適用性:

1.       一次性將算法的不變部分封裝到父類當中,將可變的部分放到子類中去實現。

2.       各子類的公共部分亞冠提取出來放到父類當中,避免代碼重復,分離變化和不變的地方。

3.       通過hook來控制子類的擴展。

4.       模板方法的格式:
class TemplateMethod_Demo
{
  public:
    <返回值類型> <模板方法名>(<參數列表>); //模板方法成員函數,定義為公有的非虛成員函數,供客戶調用;
  protected:
    virtual <返回值類型> <抽象操作的方法名>(<參數列表>) = 0;//抽象操作(可選),:原語操作,用純虛函數表示,必須被重定義,定義為保護類型的,只能被模板方法本身調用;
    virtual <返回值類型> <鉤子操作的方法名>(<參數列表>){};  //鉤子操作(必選),:原語操作,用虛函數表示,可被重定義,提供缺省實現,定義為保護類型的,只能被模板方法本身調用;
};

 

  1// template.cpp : 定義控制臺應用程序的入口點。
  2//
  3
  4#include "stdafx.h"
  5#include<iostream>
  6using namespace std;
  7
  8class AbstractClass
  9{
 10public:
 11     AbstractClass(){}
 12     virtual ~AbstractClass(){}
 13     virtual void doFirst();
 14     virtual void doAfter();
 15     // 這個函數中定義了算法的輪廓
 16     void TemplateMethod()
 17     {
 18         doFirst();
 19         PrimitiveOperation1();
 20         PrimitiveOperation2();
 21          if (b_jugle) 
 22          {
 23              doSthElse();
 24          }
 
 25         doAfter();
 26     }

 27     virtual void setHookTrue()
 28     {
 29         AbstractClass::b_jugle = true;
 30     }
;
 31
 32protected:
 33     // 純虛函數,由派生類實現之
 34     virtual void PrimitiveOperation1() = 0;
 35     virtual void PrimitiveOperation2() = 0;
 36     virtual void  doSthElse() = 0;
 37     static bool b_jugle;
 38     
 39     
 40}
;
 41
 42bool AbstractClass::b_jugle = false;
 43
 44
 45void AbstractClass::doFirst()
 46{
 47    cout<<"do std before"<<endl;
 48}

 49
 50void AbstractClass::doAfter()
 51{
 52    cout<<"do std after"<<endl;
 53}

 54
 55// 繼承自AbstractClass,實現算法
 56class ConcreateClass: public AbstractClass
 57{
 58public:
 59     ConcreateClass(){}
 60     virtual ~ConcreateClass(){}
 61
 62protected:
 63     virtual void PrimitiveOperation1()
 64     {
 65         cout << "PrimitiveOperation1 by ConcreateClass\n";
 66     }

 67     virtual void PrimitiveOperation2()
 68     {
 69         cout << "PrimitiveOperation2 by ConcreateClass\n";
 70     }

 71     virtual void doSthElse()
 72     {
 73         cout<<"so something else!\n"<<endl;
 74     }

 75}
;
 76
 77
 78// 繼承自AbstractClass,實現算法
 79class ConcreateClassNew: public AbstractClass
 80{
 81public:
 82     ConcreateClassNew(){}
 83     virtual ~ConcreateClassNew(){}
 84    
 85protected:
 86     virtual void PrimitiveOperation1()
 87     {
 88         cout << "PrimitiveOperation1 by ConcreateClassNew\n";
 89     }

 90     virtual void PrimitiveOperation2()
 91     {
 92         cout << "PrimitiveOperation2 by ConcreateClassNew\n";
 93     }

 94      virtual void doSthElse()
 95     {
 96         cout<<"so something else!\n"<<endl;
 97     }

 98    
 99}
;
100
101
102int _tmain(int argc, _TCHAR* argv[])
103{
104    AbstractClass* pConcreateClass = new ConcreateClass;
105    pConcreateClass->TemplateMethod();
106    delete pConcreateClass;
107
108
109    AbstractClass* pConcreateClass2 = new ConcreateClassNew;
110    pConcreateClass2->setHookTrue();
111    pConcreateClass2->TemplateMethod();
112    delete pConcreateClass2;
113    return 0;
114}

115
116

運行結果:


template method的設計原則:
1.封裝變化部分;
2.對接口編程
3. 好萊塢原則:別調用我們,在我們需要時會調用你

最后談一下和策略模式的區別,最主要的區別是一個是使用繼承而策略模式是使用組合方式。

posted on 2012-04-29 11:18 sheng 閱讀(400) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2016年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

統計

常用鏈接

留言簿(1)

隨筆檔案

收藏夾

同行

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一本久久a久久精品亚洲| 午夜精品成人在线| 亚洲国产精品久久久久婷婷老年 | 欧美成年人网| 国产精品久久久久一区二区三区共 | 日韩亚洲精品在线| 欧美ed2k| 亚洲高清资源| 久久综合网色—综合色88| 亚洲一区二区三区中文字幕在线| 欧美黄色网络| 亚洲日本电影| 欧美激情网站在线观看| 另类欧美日韩国产在线| 精品不卡一区| 久久在线视频在线| 久久激五月天综合精品| 国产婷婷成人久久av免费高清 | 国产精品久久国产三级国电话系列| 亚洲国产一区视频| 欧美成人免费在线| 欧美91大片| 亚洲免费高清视频| 日韩五码在线| 欧美性色aⅴ视频一区日韩精品| 一区二区激情小说| 一区二区av| 国产欧美一区二区在线观看| 久久精品日韩一区二区三区| 欧美一级大片在线免费观看| 国产一在线精品一区在线观看| 久久久久五月天| 老司机亚洲精品| 99在线热播精品免费99热| 一区二区毛片| 国产在线高清精品| 欧美国产日韩在线观看| 欧美精品一区二区三区在线播放| 亚洲视频精选在线| 性8sex亚洲区入口| 亚洲国产日韩综合一区| 亚洲免费成人av| 国产日韩视频| 欧美激情一区二区三区在线| 亚洲人成人99网站| 裸体歌舞表演一区二区| 亚洲精品在线二区| 亚洲午夜视频在线观看| 红桃视频国产一区| 91久久在线观看| 亚洲欧美三级伦理| 伊人久久大香线蕉综合热线| 亚洲国产裸拍裸体视频在线观看乱了| 欧美成人精品三级在线观看 | 亚洲成色777777在线观看影院| 欧美不卡高清| 性伦欧美刺激片在线观看| 久久另类ts人妖一区二区| 艳女tv在线观看国产一区| 亚洲免费一级电影| 亚洲国产日韩在线一区模特| 一本色道久久88综合亚洲精品ⅰ | 一区二区欧美在线| 狠狠色伊人亚洲综合成人| 在线观看日韩www视频免费 | 一区二区三区免费看| 一区二区三区免费在线观看| 国产亚洲一区二区三区| 亚洲国产精品电影在线观看| 国产精品久久久久久影视 | 日韩网站在线观看| 欧美一区午夜精品| 亚洲五月六月| 欧美成人资源| 老司机午夜免费精品视频| 欧美性一区二区| 久久xxxx| 欧美一区二区三区免费视| 亚洲第一区在线| 亚洲自拍偷拍色片视频| 亚洲精品韩国| 欧美亚洲免费电影| 亚洲香蕉网站| 欧美精品免费在线| 欧美不卡在线视频| 国产字幕视频一区二区| 亚洲一区二区毛片| 亚洲视频一区二区| 欧美精品乱人伦久久久久久| 欧美大片在线观看| 精品成人免费| 久久精品国产99| 最新国产乱人伦偷精品免费网站| 久久久久se| 一区二区三区欧美| 欧美极品在线播放| 欧美一区二区免费观在线| 欧美在线短视频| 久久婷婷av| 亚洲欧美视频一区二区三区| 国产伦一区二区三区色一情| 久久三级视频| 欧美日韩少妇| 99在线精品观看| 亚洲一区在线直播| 欧美精品免费在线| 91久久精品网| aa级大片欧美| 欧美日韩国产美女| 亚洲一区二区三区在线播放| 午夜精品免费在线| 国产精品入口| 欧美综合二区| 国内精品久久久久影院 日本资源| 另类av一区二区| 国产一区二区精品丝袜| 欧美中文在线免费| 女仆av观看一区| 亚洲人成人77777线观看| 欧美国产日本在线| 一区二区欧美视频| 亚洲欧美在线视频观看| 国产精品视频午夜| 欧美在线首页| 亚洲高清视频一区| 99热这里只有精品8| 欧美午夜精品一区| 亚洲欧美综合一区| 欧美91精品| 这里只有精品电影| 国产欧美日韩综合一区在线观看 | 亚洲最快最全在线视频| 裸体一区二区三区| 亚洲精品日韩久久| 性欧美xxxx大乳国产app| 国产精品网曝门| 久久久国产成人精品| 亚洲欧洲精品一区二区三区波多野1战4 | 国产一区二区日韩精品| 久久午夜视频| 欧美在线网站| 亚洲电影免费观看高清完整版在线| 亚洲国产激情| 亚洲毛片一区| 久久爱www久久做| 久久综合精品一区| 亚洲你懂的在线视频| 国产精品福利网| 宅男66日本亚洲欧美视频 | 欧美亚洲综合在线| 在线视频精品一区| 国产一区二区三区的电影 | 欧美绝品在线观看成人午夜影视 | 国产精品激情| 久久免费视频这里只有精品| 99视频一区二区| 欧美成人三级在线| 午夜在线电影亚洲一区| 99成人精品| 亚洲国产精品一区在线观看不卡 | 国产精品日韩欧美一区二区| 久热精品在线视频| 欧美亚洲视频| 亚洲一区二区久久| 亚洲精选成人| 亚洲国产成人精品久久久国产成人一区| 亚洲欧美日韩在线综合| 99国产麻豆精品| 在线观看福利一区| 国产日本精品| 国产精品性做久久久久久| 欧美日韩精品免费看| 欧美大片免费| 欧美激情一区二区三区| 亚洲校园激情| 最新成人在线| 美女精品国产| 久久女同互慰一区二区三区| 亚洲在线免费视频| 99国产精品久久久久老师| 亚洲国产高清一区二区三区| 国内一区二区三区| 国产主播一区二区三区四区| 国产热re99久久6国产精品| 国产欧美日韩伦理| 国产精品久久777777毛茸茸| 国产精品电影观看| 欧美天堂亚洲电影院在线观看 | 亚洲一区二区欧美日韩| 日韩视频三区| 欧美四级伦理在线| 亚洲黄色小视频| 在线视频欧美日韩精品| 久久国产精品第一页| 欧美激情四色 | 性欧美videos另类喷潮| 欧美韩日精品| 午夜激情久久久| 欧美乱在线观看| 伊人久久久大香线蕉综合直播|