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

設計模式之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 閱讀(395) 評論(0)  編輯 收藏 引用

導航

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統計

常用鏈接

留言簿(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>
            亚洲国产99精品国自产| 亚洲国产精品va在线看黑人| 艳妇臀荡乳欲伦亚洲一区| 亚洲免费中文字幕| 免费在线视频一区| 香港久久久电影| 国产精品自拍在线| 欧美亚洲免费电影| 中文欧美字幕免费| 欧美日韩一本到| 一区二区三区四区五区在线| 欧美成人午夜77777| 久久国产66| 在线观看不卡| 欧美成人一区二区三区在线观看| 欧美影院一区| 国产一区在线视频| 久久久久久久91| 久久久蜜桃一区二区人| 精品不卡在线| 欧美国产免费| 欧美福利在线| 9色国产精品| 在线中文字幕不卡| 国产欧美一区二区精品秋霞影院| 亚洲女人av| 午夜在线a亚洲v天堂网2018| 国内精品久久久久久| 久久―日本道色综合久久| 久久久亚洲欧洲日产国码αv| 在线欧美视频| 亚洲精品久久视频| 国产精品一区二区黑丝| 久久国产一区二区| 免费在线成人| 亚洲欧美激情四射在线日| 亚洲欧美制服中文字幕| 国内精品嫩模av私拍在线观看| 久久久五月天| 欧美日韩第一区日日骚| 午夜日韩在线| 久久免费精品日本久久中文字幕| 亚洲精品资源| 亚洲欧美日韩人成在线播放| 狠狠狠色丁香婷婷综合激情| 亚洲高清在线播放| 国产精品成人一区二区艾草| 欧美有码在线视频| 老司机午夜精品| 亚洲影院高清在线| 久久手机免费观看| 亚洲一区在线观看视频| 亚洲女女女同性video| 欧美在线综合视频| 久久久欧美一区二区| 亚洲精品日日夜夜| 亚洲欧美成人网| 91久久国产综合久久| 亚洲婷婷国产精品电影人久久| 黄色成人免费观看| 亚洲天堂成人在线观看| 亚洲国产精品一区在线观看不卡| av成人老司机| 亚洲国产一区二区a毛片| 亚洲一区二区日本| 亚洲欧洲在线视频| 欧美一区二区三区视频在线 | 亚洲国产精品久久久久秋霞蜜臀 | 欧美.www| 欧美一区激情| 欧美第十八页| 久久免费高清视频| 国产精品日韩高清| 亚洲大片免费看| 国内精品福利| 欧美一区视频在线| 午夜精品美女自拍福到在线 | 欧美激情第1页| 久久在线免费观看| 国产日韩欧美不卡| 亚洲欧美日韩国产综合| 亚洲一区二区伦理| 欧美理论视频| 亚洲国产色一区| 一区二区视频免费完整版观看| 亚洲综合导航| 亚洲欧美在线视频观看| 欧美日本一区二区高清播放视频| 欧美成人情趣视频| 亚洲电影在线看| 久久婷婷亚洲| 欧美高清视频免费观看| 在线观看国产精品网站| 久久久久久穴| 欧美 日韩 国产精品免费观看| 国产综合网站| 久久久精品视频成人| 开元免费观看欧美电视剧网站| 国产日本欧美视频| 小黄鸭视频精品导航| 性感少妇一区| 国产老肥熟一区二区三区| 亚洲一区中文字幕在线观看| 亚洲永久精品大片| 国产精品亚发布| 香港久久久电影| 久久综合色一综合色88| 亚洲福利视频三区| 欧美xxxx在线观看| 欧美在线视频全部完| 亚洲激情av在线| 亚洲免费电影在线观看| 欧美日韩成人在线观看| 一区二区高清视频在线观看| 亚洲视频一区在线| 国产精品看片你懂得| 午夜激情一区| 免费视频一区二区三区在线观看| 亚洲国产精品va在线观看黑人| 欧美黄色精品| 亚洲网站啪啪| 久久久一区二区| 亚洲黄色精品| 国产精品色午夜在线观看| 久久www成人_看片免费不卡| 久久综合五月| 正在播放欧美一区| 国产欧美日韩激情| 美女主播一区| 亚洲一区二区3| 男人的天堂亚洲在线| 亚洲精品视频在线观看网站 | 亚洲一级在线观看| 国产日韩精品一区二区三区在线| 久久在线观看视频| 一区二区三区四区五区精品视频| 久久国产手机看片| 一本色道久久99精品综合| 国产欧美日韩免费看aⅴ视频| 久久夜色精品国产欧美乱| 一区二区三区精品视频| 嫩草影视亚洲| 欧美亚洲免费在线| 亚洲精品影院| 国产亚洲一区二区精品| 欧美另类视频| 久久综合伊人77777| 亚洲综合欧美日韩| 91久久精品国产91久久| 久久九九热re6这里有精品 | 一区二区三区四区精品| 欧美好骚综合网| 久久久国产一区二区三区| 中国成人亚色综合网站| 亚洲黄色在线视频| 国内在线观看一区二区三区| 欧美午夜精品久久久久久浪潮 | 卡一卡二国产精品| 亚洲欧美久久久| 亚洲美女福利视频网站| 六月婷婷一区| 久久不射网站| 亚洲一级片在线看| 这里只有精品在线播放| 亚洲黑丝在线| 在线看日韩av| 精品1区2区3区4区| 国产深夜精品福利| 国产精品嫩草影院一区二区| 欧美精品麻豆| 美女主播一区| 久久一二三国产| 蜜桃精品久久久久久久免费影院| 性18欧美另类| 性刺激综合网| 亚欧美中日韩视频| 欧美一级理论性理论a| 亚洲欧美激情四射在线日 | 亚洲欧美网站| 亚洲一区二区黄色| 亚洲一区欧美| 亚洲性视频网站| 亚洲一区免费| 亚洲欧美高清| 欧美伊人久久大香线蕉综合69| 午夜精品亚洲| 久久精品72免费观看| 久久久久久久久岛国免费| 久久久精品一区二区三区| 久久久中精品2020中文| 老色鬼精品视频在线观看播放| 久久中文在线| 欧美国产精品一区| 欧美猛交免费看| 国产精品久久久久一区| 国产伦精品一区二区三区免费 | 欧美激情偷拍| 亚洲日韩欧美视频一区| 欧美日韩精品欧美日韩精品一| 欧美国产日韩免费|