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

設計模式之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>
            亚洲精品专区| 久久久精品免费视频| 91久久久亚洲精品| 99视频在线精品国自产拍免费观看| 亚洲丁香婷深爱综合| 美女任你摸久久| 久久爱www久久做| 欧美国产亚洲另类动漫| 亚洲女同精品视频| 狼狼综合久久久久综合网| 久久人人精品| 国产一区二区剧情av在线| 亚洲欧洲在线看| 裸体女人亚洲精品一区| 国产亚洲观看| 亚洲电影免费观看高清完整版| 亚洲尤物在线视频观看| 亚洲精品一区二区三| 欧美精品福利视频| 亚洲国产天堂久久综合网| 欧美欧美午夜aⅴ在线观看| 国产精品国产精品国产专区不蜜| 国产情侣一区| 久久久青草青青国产亚洲免观| 欧美激情按摩在线| 亚洲综合色视频| 国内精品久久久久久久影视麻豆| 美日韩精品视频| 欧美日韩国产91| 牛牛影视久久网| 一区二区三区四区蜜桃| 欧美日韩精品一区| 欧美午夜精品伦理| 91久久久久久久久久久久久| 欧美日本亚洲| 国产专区综合网| 日韩视频中文| 一区二区高清在线| 亚洲国产视频一区| 国产精品一二三| 亚洲欧美精品| 亚洲黑丝一区二区| 在线亚洲一区| 亚洲福利视频三区| 久久国产视频网站| 久久青草久久| 欧美日韩国产在线播放| 一区二区三区在线视频观看| 国产亚洲午夜| 免费成人高清视频| 亚洲精品欧美精品| 亚洲国产精品成人综合色在线婷婷| 久久国产福利| 亚洲国产另类久久久精品极度| 美腿丝袜亚洲色图| 欧美成人tv| 一区在线视频观看| 黄色av成人| 欧美与黑人午夜性猛交久久久| 久久国产乱子精品免费女 | 久久久久综合网| 久久成年人视频| 在线一区亚洲| 久久夜色撩人精品| 久久久久国产精品午夜一区| 亚洲破处大片| 久久爱www.| 国产精品99久久久久久人 | 欧美激情一区在线| 亚洲在线观看免费| 美女在线一区二区| 久久久久久久久久久久久女国产乱 | 欧美激情亚洲视频| 欧美午夜在线一二页| 亚洲国产视频一区二区| 国产日韩av一区二区| 一本色道久久综合亚洲精品小说| 激情六月婷婷久久| 欧美亚洲日本国产| 国产欧美一区二区精品性色| 亚洲欧洲日本专区| 亚洲国产视频直播| 欧美成人在线免费视频| 欧美黄色aaaa| 亚洲精品在线三区| 欧美黄色免费| 在线视频欧美日韩精品| 午夜精品久久久久99热蜜桃导演| 亚洲免费观看高清完整版在线观看熊 | 亚洲精品免费一区二区三区| 亚洲欧美日本日韩| 国产精品青草久久| 日韩视频在线观看一区二区| 日韩视频精品| 国产精品久久久久久久久久久久| 一本色道久久88精品综合| 亚洲午夜一区| 亚洲网站视频| 在线免费高清一区二区三区| 久久精品国产精品亚洲综合 | 日韩亚洲欧美成人| 中日韩午夜理伦电影免费| 欧美亚洲第一区| 久久九九热re6这里有精品| 欧美二区在线| 国产一区二区三区免费在线观看| 欧美在线视频一区| 国产香蕉97碰碰久久人人| 欧美中文字幕在线视频| 狠狠色综合网| 欧美日韩国产系列| 久久久精品视频成人| 宅男噜噜噜66国产日韩在线观看| 久久久久网址| 中文亚洲视频在线| 1024亚洲| 精品不卡一区| 国产区日韩欧美| 国产伦精品一区二区三区高清| 欧美成在线视频| 美女视频网站黄色亚洲| 久久欧美中文字幕| 久久国产精品一区二区三区| 午夜免费日韩视频| 亚洲网站啪啪| 一本色道久久综合精品竹菊 | 亚洲精选在线观看| 欧美成年人在线观看| 久久久久久久成人| 久久久久久999| 久久综合九色99| 美女视频网站黄色亚洲| 免费国产一区二区| 欧美大片第1页| 欧美日韩国产在线播放| 欧美日韩一区二区精品| 午夜一级在线看亚洲| 欧美一区二区三区在线视频| 欧美主播一区二区三区| 蜜桃av噜噜一区二区三区| 欧美日韩一区三区四区| 国产精品美女诱惑| 欧美日韩国产123| 国产亚洲欧美日韩在线一区| 亚洲欧洲精品天堂一级 | 欧美成人一区二区三区| 国产精品免费在线| 亚洲第一中文字幕在线观看| 亚洲精品日本| 鲁大师影院一区二区三区| 欧美高清视频一区二区| 国产精品专区h在线观看| 亚洲国产小视频| 久久久人成影片一区二区三区观看| 欧美激情一区二区在线 | 亚洲国产精品一区制服丝袜| 午夜激情一区| 久久午夜电影网| 亚洲激情电影中文字幕| 国产精品视频免费在线观看| 国内精品嫩模av私拍在线观看| 久久亚洲综合色一区二区三区| 欧美日韩一区二区高清| 91久久国产综合久久91精品网站| 欧美在线一级va免费观看| 亚洲视频电影图片偷拍一区| 欧美三级精品| 国产区亚洲区欧美区| 欧美在线免费视屏| 亚洲欧美一区二区激情| 国产乱码精品| 免费一级欧美片在线观看| 久久久久高清| 99精品黄色片免费大全| 亚洲人成高清| 亚洲欧美第一页| 国产一区91| 亚洲缚视频在线观看| 欧美日韩视频在线第一区| 午夜精品久久99蜜桃的功能介绍| 午夜精品久久久久| 亚洲国产成人精品视频| 亚洲欧美成人一区二区在线电影| 亚洲精品影视在线观看| 国产欧美日韩精品a在线观看| 欧美日韩国语| 久久久亚洲精品一区二区三区| 免费毛片一区二区三区久久久| 一本色道婷婷久久欧美| 久久综合一区二区三区| 亚洲一级电影| 欧美理论片在线观看| 久久久蜜桃一区二区人| 国产伦精品一区二区三区照片91| 欧美11—12娇小xxxx| 亚洲欧洲午夜| 国模一区二区三区| 午夜天堂精品久久久久| 午夜视频一区| 国模精品一区二区三区色天香|