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

設計模式之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   管理


導航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統計

常用鏈接

留言簿(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久久久久久国产精品| 国产字幕视频一区二区| 亚洲欧洲在线看| 欧美黄色影院| 欧美激情小视频| 亚洲人成绝费网站色www| 亚洲日韩欧美一区二区在线| 欧美激情在线狂野欧美精品| 牛夜精品久久久久久久99黑人 | 国产九区一区在线| 国产精品久久久久99| 国产精品一区二区三区乱码| 国产真实乱子伦精品视频| 在线成人欧美| 在线一区视频| 久久高清免费观看| 欧美国产日本| 亚洲私人影院| 久久久久国产精品www| 欧美高清不卡| 国产精品男gay被猛男狂揉视频| 国产欧美韩国高清| 伊人天天综合| 亚洲一级免费视频| 久久亚洲综合| 中国成人亚色综合网站| 久久这里有精品视频| 欧美日韩高清在线播放| 国产一级一区二区| 在线一区亚洲| 嫩草影视亚洲| 午夜影院日韩| 欧美私人网站| 国内精品国产成人| 亚洲影院色在线观看免费| 欧美成熟视频| 欧美亚洲一区二区三区| 欧美日韩1区2区| 亚洲国产精品一区二区第四页av| 亚洲女同同性videoxma| 亚洲高清视频在线观看| 午夜精品久久久久久久久久久 | 国产日韩欧美在线看| 夜夜嗨一区二区三区| 久久综合精品国产一区二区三区| 亚洲国产精品成人综合| 亚洲淫性视频| 欧美精品网站| 激情综合久久| 久久aⅴ乱码一区二区三区| 日韩午夜在线视频| 欧美freesex交免费视频| 国内成+人亚洲| 久久天堂国产精品| 午夜一区二区三区在线观看| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 一区久久精品| 久久av一区二区三区| 亚洲色在线视频| 欧美午夜不卡在线观看免费 | 欧美一区二区三区精品电影| 欧美日韩中文字幕在线| 一本色道婷婷久久欧美| 亚洲欧洲在线视频| 欧美日韩在线第一页| 一区二区日韩精品| 日韩一级免费观看| 欧美日韩国语| 亚洲一区二区在线看| 一本色道久久88精品综合| 欧美日韩天天操| 亚洲一区二区三区成人在线视频精品 | 国产精品久久久久久亚洲调教| 亚洲婷婷综合色高清在线| 99re6这里只有精品| 欧美色图一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 99在线热播精品免费99热| 欧美午夜不卡在线观看免费| 亚洲欧美www| 欧美一区二区三区啪啪| 在线观看国产成人av片| 亚洲免费观看高清在线观看| 国产精品色网| 欧美成年人视频网站| 欧美肥婆在线| 亚洲一区二区成人| 欧美一区二区私人影院日本 | 欧美专区一区二区三区| 欧美一区二区黄色| 亚洲欧洲一级| 亚洲午夜羞羞片| 韩日成人在线| 亚洲精品久久久久久下一站| 国产精品一区二区a| 美女视频黄免费的久久| 久久成人在线| 美国十次成人| 黄网站免费久久| 亚洲高清久久网| 欧美色欧美亚洲高清在线视频| 性做久久久久久| 久热re这里精品视频在线6| 亚洲视频在线视频| 久久gogo国模裸体人体| 正在播放欧美视频| 久久久久在线| 亚洲欧美文学| 欧美国产精品专区| 久久久一区二区| 欧美日韩在线免费视频| 蜜臀久久99精品久久久久久9| 欧美色综合天天久久综合精品| 久久久综合网站| 国产精品高潮呻吟久久av无限| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品自拍网站| 亚洲精品久久| 亚洲国产精品一区二区久| 亚洲综合好骚| 亚洲一区国产精品| 欧美—级a级欧美特级ar全黄| 久久婷婷国产综合精品青草| 国产欧美日韩精品在线| 一区二区三区视频在线播放| 亚洲免费福利视频| 欧美电影资源| 亚洲第一综合天堂另类专| 韩国av一区| 性欧美video另类hd性玩具| 亚洲网在线观看| 欧美精品电影在线| 亚洲国产精品久久久久秋霞蜜臀| 伊人久久大香线蕉av超碰演员| 欧美一区二区三区四区在线| 欧美与黑人午夜性猛交久久久| 国产精品久久久久久久第一福利| 日韩午夜三级在线| 亚洲综合首页| 国产精品日韩欧美一区二区三区 | 午夜精品av| 欧美日韩一区二区三区在线观看免| 亚洲国产精品一区二区第一页 | 亚洲自拍16p| 欧美日韩免费观看一区=区三区| 亚洲国产日日夜夜| 亚洲精品一区二区网址| 欧美黄色aa电影| 日韩视频精品| 午夜视频一区| 国产一区二区激情| 久久久国产精品一区二区中文 | 亚洲欧美清纯在线制服| 午夜精品一区二区在线观看 | 亚洲欧美中文字幕| 国产精品毛片| 性色av一区二区三区| 久久久噜噜噜久久久| 噜噜噜91成人网| 亚洲美女毛片| 欧美性片在线观看| 香港成人在线视频| 欧美福利视频在线观看| 野花国产精品入口| 国产午夜精品全部视频在线播放| 久久爱www| 亚洲欧洲精品一区二区三区不卡 | 一区二区三区视频观看| 国产精品视频一二三| 久久久www| 亚洲精品在线视频观看| 亚洲女人天堂成人av在线| 狠狠v欧美v日韩v亚洲ⅴ| 欧美精品一区在线| 欧美一区二区三区久久精品茉莉花| 欧美风情在线观看| 亚洲男人天堂2024| 亚洲国产精品第一区二区三区| 国产精品福利在线| 免费成人网www| 亚洲综合另类| 亚洲国产精品成人精品| 久久成人精品| 艳女tv在线观看国产一区| 国产精品美女久久久久久久| 久久视频一区二区| 亚洲网站视频| 亚洲精品1234| 久久久99国产精品免费| 亚洲免费高清| 亚洲成人直播| 国产精品一区二区三区乱码 | 亚洲激情女人| 久久久久99精品国产片| 一本一道久久综合狠狠老精东影业 | 国产精品久久久久久久久动漫| 牛牛国产精品| 欧美专区日韩视频| 亚洲欧美一区二区激情| 一二三区精品福利视频|