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

Mike's blog

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  0 Posts :: 23 Stories :: 83 Comments :: 0 Trackbacks

常用鏈接

留言簿(17)

我參與的團隊

搜索

  •  

最新評論

模板方法模式是一種很簡單但卻很常見的設計模式,它常常在不知不覺中被使用。
概念:定義一個操作中的算法的骨架,而將具體的執行步驟延遲到子類中。模板方法使得子類可以不改變算法的結構而只是重新定義算法的步驟,使得不同步驟產生不同的效果。
說的更簡單點,就是執行的框架由基類來定,而框架中的方法及執行順序由子類來重定義。
UML類圖:
 
上圖的代碼很好實現,就是基類的模板函數中調用了operation1和operation2中的一個或兩個,而子類則重載了那兩個方法。

下面給出一個常用的簡單多線程工作模式,具體的工作由實際的調用者決定。
為方便,將代碼都實現在一個文件里:
  1#include <iostream>
  2#include <pthread.h>
  3#include <unistd.h>
  4
  5using namespace std;
  6 
  7/**
  8 * @class BaseThread 
  9 * @brief The Base class for TemplateMethod DesignPattern.
 10 * @author wei.chen (2010-8-7)
 11 */

 12class BaseThread
 13{
 14public:
 15    BaseThread(): m_runThread(0)
 16    {
 17        cout << "BaseThread's constructor" << endl;
 18    }

 19
 20    virtual ~BaseThread()
 21    {
 22        cout << "BaseThread's destructor" << endl;
 23    }

 24
 25    /**
 26     * @fn run 
 27     * @brief Running as the thread's starting.
 28     * @param pObject The Sub-class's object.
 29     * @author wei.chen (2010-8-7)
 30     */

 31    static void* run(void* pObject)
 32    {
 33        cout << "running" << endl;
 34        BaseThread* pThread = static_cast<BaseThread*>(pObject);
 35        pThread->work();
 36        return NULL;
 37    }

 38
 39    /// Template method, no-virtual.
 40    int init()
 41    {
 42        cout << "Initilize" << endl;
 43        return pthread_create(&m_runThread, NULL, run, this);
 44    }

 45
 46protected:
 47
 48    /// Need to be overloaded in Sub-class.
 49    virtual int work()
 50    {
 51        cout << "The real method of working for BaseThread" << endl;
 52        return 0;
 53    }

 54
 55private:
 56    pthread_t m_runThread;
 57}
;
 58 
 59class TestThread1 : public BaseThread
 60{
 61public:
 62    TestThread1()
 63    {
 64        cout << "TestThread1's constructor" << endl;
 65    }

 66
 67    virtual ~TestThread1()
 68    {
 69        cout << "TestThread1's destructor" << endl;
 70    }

 71 
 72protected:
 73    virtual int work()
 74    {
 75        cout << "working for test1" << endl;
 76        return 0;
 77    }

 78}
;
 79
 80class TestThread2 : public BaseThread
 81{
 82public:
 83    TestThread2()
 84    {
 85        cout << "TestThread2's constructor" << endl;
 86    }

 87    virtual ~TestThread2()
 88    {
 89        cout << "TestThread2's destructor" << endl;
 90    }

 91 
 92protected:
 93    virtual int work()
 94    {
 95        cout << "working for test2" << endl;
 96        return 0;
 97    }

 98}
;
 99 
100int main()
101{
102    BaseThread* test1 = new TestThread1();
103    test1->init();
104
105    cout << endl;
106
107    BaseThread* test2 = new TestThread2();
108    test2->init();
109 
110    while (1{
111        pause();
112    }

113
114    return 0;
115}


輸出:
BaseThread's constructor
TestThread1's constructor
Initilize...
running...
working for test1

BaseThread's constructor
TestThread2's constructor
Initilize...
running...
working for test2

posted on 2010-08-09 18:09 老狼 閱讀(796) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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ⅴ人片| 久久女同互慰一区二区三区| 欧美一区亚洲二区| 欧美精品国产精品日韩精品| 国产精品自在欧美一区| 亚洲精品久久久久久久久久久久| 亚洲欧美制服另类日韩| 久久最新视频| 久久综合网色—综合色88| 欧美黑人在线播放| 日韩手机在线导航| 亚洲国产精品久久久久婷婷884 | 亚洲区国产区| 欧美激情偷拍| 欧美午夜片欧美片在线观看| 亚洲尤物在线视频观看| 久久人人97超碰国产公开结果 | 亚洲国产mv| 欧美视频在线观看免费| 一区二区精品在线观看| 久久久久久久久蜜桃| 亚洲精品社区| 亚洲美女电影在线| 极品中文字幕一区| 亚洲精品一区二区三区99| 国产亚洲午夜| 一区二区三区欧美在线| 精品二区久久| 亚洲免费在线看| 亚洲黄色成人网| 亚洲一区欧美| 一区二区三区四区五区精品视频 | 亚洲乱码国产乱码精品精可以看| 亚洲欧美www| 亚洲欧洲综合另类在线| 午夜在线观看欧美| 亚洲欧美日韩国产成人精品影院| 老司机午夜免费精品视频| 亚洲综合色视频| 欧美日韩国产一级片| 老司机免费视频久久| 国产精品福利网| 一本大道久久a久久精二百| 黄色成人91| 亚洲一区在线观看视频| 亚洲图片欧洲图片日韩av| 免费成人网www| 欧美成人官网二区| 国产综合视频| 亚洲欧美日韩直播| 久久精品毛片| 国产精品日日摸夜夜添夜夜av| 最新国产成人在线观看| 亚洲破处大片| 亚洲第一福利视频| 西瓜成人精品人成网站| 亚洲免费视频中文字幕| 亚洲永久免费视频| 毛片基地黄久久久久久天堂| 在线午夜精品| 欧美18av| 亚洲成色最大综合在线| 最新成人在线| 欧美成人午夜激情| 欧美大秀在线观看| 亚洲精品一区久久久久久| 久久免费国产精品| 美女主播视频一区| 亚洲精品小视频在线观看| 久久久久久9| 欧美一级视频精品观看| 国产精品丝袜xxxxxxx| 亚洲午夜未删减在线观看| 久久av在线看| 国产最新精品精品你懂的| 99精品国产一区二区青青牛奶| 亚洲性xxxx| 欧美系列亚洲系列| 午夜一区在线| 欧美成人四级电影| 亚洲乱码国产乱码精品精天堂| 国产精品成人一区二区网站软件 | 久久久久久**毛片大全| 国产精品综合色区在线观看| 中文国产一区| 亚洲免费在线观看视频| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲美女av在线播放| 在线中文字幕日韩| 欧美精品福利| 一区二区激情视频| 久久精品日产第一区二区三区| 日韩写真视频在线观看| 香港久久久电影| 国内精品99| 女人香蕉久久**毛片精品| 亚洲国产清纯| 欧美专区亚洲专区| 亚洲电影av| 欧美日韩视频在线| 久久精品系列| 亚洲国产精品福利| 久久精品99国产精品酒店日本| 在线成人av.com| 欧美久久视频| 久久久亚洲高清| 日韩天堂在线观看| 欧美影片第一页| 99精品欧美一区二区三区| 国产精品夜夜嗨| 久久久久久久激情视频| 日韩一区二区免费看| 久久精品成人一区二区三区| 一本久道久久久| 激情国产一区| 国产精品www| 欧美日韩1234| 久久九九精品| 一区二区三区产品免费精品久久75 | 亚洲欧美另类在线| 每日更新成人在线视频| 亚洲男人天堂2024| 国产精品激情av在线播放| 欧美成人高清视频| 亚洲午夜女主播在线直播| 欧美激情亚洲综合一区| 一区二区精品国产| 亚洲高清视频一区| 国产一区导航| 国产一区二区电影在线观看| 欧美激情网友自拍| 久久深夜福利免费观看| 日韩视频在线一区| 亚洲第一在线综合在线| 欧美成人免费全部| 久久久欧美精品sm网站| 久久精品国产第一区二区三区最新章节| 日韩视频一区| 在线观看亚洲专区| 精久久久久久久久久久| 国产农村妇女精品| 国产精品二区在线观看| 国产精品久久午夜夜伦鲁鲁| 欧美日韩免费在线| 亚洲一区中文字幕在线观看| 亚洲一区二区免费| 亚洲天堂久久| 亚洲欧美日韩天堂| 亚洲视频精选在线| av成人老司机| 亚洲一区二区免费视频| 国产精品99久久久久久www| 久久综合五月| 你懂的网址国产 欧美| 久色婷婷小香蕉久久| 欧美电影打屁股sp| 欧美国产视频一区二区| 久久国产精品第一页| 久久在线免费| 美腿丝袜亚洲色图| 亚洲国产一区二区视频| 91久久香蕉国产日韩欧美9色| 亚洲国产精品va在线看黑人动漫| 亚洲精品乱码久久久久| 亚洲国产一区二区三区高清| 久久久噜噜噜久久| 欧美国产精品| 亚洲国产欧美另类丝袜| 一区二区久久久久久| 国产精品99久久久久久人| 亚洲在线中文字幕| 欧美在线一二三四区| 久久性色av| 欧美精品免费看| 国产精品久久福利| 国产自产高清不卡| 亚洲激情在线激情| 夜夜爽99久久国产综合精品女不卡| 国产一级揄自揄精品视频| 黄色日韩在线| 日韩网站在线看片你懂的| 亚洲欧美日韩在线观看a三区| 欧美在线一二三四区| 免费成人在线观看视频| 欧美在线免费视屏| 在线观看欧美黄色| 亚洲大片在线| 亚洲男人的天堂在线| 欧美专区日韩专区| 欧美亚洲一级| 亚洲国产精品嫩草影院| 亚洲特级毛片| 欧美精品一级| 国产日韩精品在线播放| 99精品视频免费观看视频| 午夜视频精品| 亚洲第一精品福利| 亚洲婷婷免费| 亚洲欧美一区二区视频| 久久综合亚州|