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

積木

No sub title

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

轉(zhuǎn)載自:http://patmusing.blog.163.com/blog/static/1358349602010150231168/

在一個(gè)方法中定義一個(gè)算法的框架,并將該算法的某些步驟,延遲到子類實(shí)現(xiàn)。Template Method使得子類可以重新定義一個(gè)算法中的某些特定的步驟,而無(wú)需改變整個(gè)算法的結(jié)構(gòu)。

“Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.” - GoF

換言之,Template Method提供一個(gè)方法,以允許子類重寫該方法的一部分,而無(wú)需重寫整個(gè)子類。

比如,對(duì)于某一項(xiàng)任務(wù),如果它有一個(gè)復(fù)雜的成員函數(shù),并且該成員函數(shù)可以分成幾個(gè)步驟,同時(shí)這幾個(gè)步驟構(gòu)成成員函數(shù)的整體結(jié)構(gòu)式穩(wěn)定的,但各個(gè)子步驟卻有很多改變的需求,這樣的情形下就特別適合使用Template MethodTemplate Method設(shè)計(jì)模式就是在確定穩(wěn)定的成員函數(shù)組成結(jié)構(gòu)的前提下,應(yīng)對(duì)各個(gè)子步驟的變化。

Template Method模式之UML類圖:

25. C++實(shí)現(xiàn)Behavioral - Template Method模式 - 玄機(jī)逸士 - 玄機(jī)逸士博客

業(yè)務(wù)示例:

測(cè)試各種不同的小汽車。

//TemplateMethod.h

#include <iostream>

using namespace std;

class TestVehicle

{

public:

void test() // 測(cè)試。這就是Template Method。它一共由6個(gè)步驟按照一定的時(shí)間

{ // 順序組成,但各個(gè)步驟的實(shí)現(xiàn)被延遲到TestVehicle的子類

cout << "Start to test...." << endl; // 模擬固定部分的代碼

start_up(); // 啟動(dòng)

blow_horn(); // 按喇叭

run(); // 行駛

turn(); // 轉(zhuǎn)彎

brake(); // 剎車

stop(); // 停車

cout << "Test finished..." << endl; // 模擬固定部分的代碼

}

virtual ~TestVehicle()

{

cout << "in the destructor of TestVehicle..." << endl;

}

protected:

virtual void start_up() = 0;

virtual void blow_horn() = 0;

virtual void run() = 0;

virtual void turn() = 0;

virtual void brake() = 0;

virtual void stop() = 0;

};

// 測(cè)試帕沙特

class TestPassat : public TestVehicle

{

public:

~TestPassat()

{

cout << "in the destructor of TestPassat..." << endl;

}

protected:

void start_up()

{

cout << "--- Passat:\tstart up ---" << endl; // 模擬啟動(dòng)Passat

}

void blow_horn()

{

cout << "--- Passat:\tblow the horn ---" << endl; // 模擬按Passat的喇叭

}

void run()

{

cout << "--- Passat:\trun ---" << endl; // 模擬Passat行駛

}

void turn()

{

cout << "--- Passat:\ttrun ---" << endl; // 模擬Passat轉(zhuǎn)彎

}

void brake()

{

cout << "--- Passat:\tbrake ---" << endl; // 模擬Passat剎車

}

void stop()

{

cout << "--- Passat:\tstop ---" << endl; // 模擬Passat停車

}

};

// 測(cè)試捷達(dá)

class TestJetta : public TestVehicle

{

public:

~TestJetta()

{

cout << "in the destructor of TestJetta..." << endl;

}

protected:

void start_up()

{

cout << "--- Jetta:\tstart up ---" << endl; // 模擬按Jetta的喇叭

}

void blow_horn()

{

cout << "--- Jetta:\tblow the horn ---" << endl; // 模擬按Jetta的喇叭

}

void run()

{

cout << "--- Jetta:\trun ---" << endl; // 模擬Jetta行駛

}

void turn()

{

cout << "--- Jetta:\ttrun ---" << endl; // 模擬Jetta轉(zhuǎn)彎

}

void brake()

{

cout << "--- Jetta:\tbrake ---" << endl; // 模擬Jetta剎車

}

void stop()

{

cout << "--- Jetta:\tstop ---" << endl; // 模擬Jetta停車

}

};

// TemplateMethod.cpp

#include "TemplateMethod.h"

int main(int argc, char** argv)

{

// 測(cè)試帕沙特

TestVehicle *tvPassat = new TestPassat();

tvPassat->test();

cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;

// 測(cè)試捷達(dá)

TestVehicle *tvJetta = new TestJetta();

tvJetta->test();

cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;

delete tvPassat;

delete tvJetta;

return 0;

}

運(yùn)行結(jié)果:

Start to test....

--- Passat: start up ---

--- Passat: blow the horn ---

--- Passat: run ---

--- Passat: trun ---

--- Passat: brake ---

--- Passat: stop ---

Test finished...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Start to test....

--- Jetta: start up ---

--- Jetta: blow the horn ---

--- Jetta: run ---

--- Jetta: trun ---

--- Jetta: brake ---

--- Jetta: stop ---

Test finished...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

in the destructor of TestPassat...

in the destructor of TestVehicle...

in the destructor of TestJetta...

in the destructor of TestVehicle...

上述程序的UML類圖:

25. C++實(shí)現(xiàn)Behavioral - Template Method模式 - 玄機(jī)逸士 - 玄機(jī)逸士博客

Template Method模式應(yīng)該是GoF給出的23個(gè)模式中相對(duì)簡(jiǎn)單的一個(gè)。

posted on 2013-03-08 15:47 Jacc.Kim 閱讀(232) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 設(shè)計(jì)模式
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            在线视频亚洲| 久久综合伊人77777| 亚洲国产91| 国产女主播在线一区二区| 欧美成人精品福利| 欧美在线免费视屏| 亚洲天天影视| 亚洲精品久久久久久久久久久久| 久久亚裔精品欧美| 午夜精品一区二区三区在线播放 | 中文欧美字幕免费| 亚洲成人原创| 国内成人自拍视频| 国产女主播一区二区| 国产精品扒开腿做爽爽爽视频| 欧美凹凸一区二区三区视频| 久久精品在线| 欧美专区日韩专区| 午夜精品久久| 亚洲一线二线三线久久久| 一区二区三区精品在线| 日韩亚洲成人av在线| 亚洲国产日韩综合一区| 欧美成人国产va精品日本一级| 久久精品91久久久久久再现| 欧美亚洲在线播放| 午夜久久美女| 欧美一区二区三区播放老司机 | 亚洲在线免费观看| 中文在线资源观看网站视频免费不卡| 亚洲日本乱码在线观看| 亚洲精品在线免费| 亚洲精品乱码久久久久久黑人| 亚洲激情另类| 亚洲美女毛片| 一区二区三区欧美在线| 中文日韩欧美| 午夜精品久久久久影视| 欧美一区二区三区四区高清| 欧美一区二区三区免费观看| 欧美一区免费视频| 久久久久久综合网天天| 久久亚洲春色中文字幕久久久| 久久先锋影音| 欧美激情在线| 欧美天天影院| 国产女主播一区二区| 国产主播精品在线| 亚洲高清免费| 99国产精品视频免费观看一公开| 一区二区三区国产精品| 亚洲欧美清纯在线制服| 久久国产99| 欧美成人免费网站| 亚洲日本在线观看| 亚洲一级影院| 久久国产欧美精品| 欧美华人在线视频| 国产精品成人一区二区| 国产一级久久| 亚洲人成欧美中文字幕| 亚洲一区二区三区乱码aⅴ| 欧美在线视频二区| 欧美成人午夜77777| 亚洲老司机av| 香蕉成人伊视频在线观看| 久久这里只精品最新地址| 欧美精品免费观看二区| 国产人妖伪娘一区91| 亚洲高清不卡| 香蕉国产精品偷在线观看不卡| 久久久免费精品视频| 亚洲黄色尤物视频| 午夜免费电影一区在线观看| 久久视频一区| 欧美日韩视频在线一区二区| 国产一区二区0| 一本久久综合| 久久青青草综合| 亚洲精品久久视频| 久久精品国产亚洲精品| 欧美全黄视频| 国内精品一区二区| 亚洲主播在线观看| 欧美激情按摩在线| 午夜精品一区二区三区在线播放| 欧美韩日一区| 樱桃国产成人精品视频| 亚洲欧美日韩在线高清直播| 欧美高清在线视频| 亚洲你懂的在线视频| 欧美久久久久久久久久| 一区免费观看| 欧美一区二区三区视频在线| 亚洲精品免费在线播放| 久久精品亚洲精品国产欧美kt∨| 欧美午夜在线| 亚洲免费久久| 欧美成人精品1314www| 性做久久久久久久久| 欧美午夜免费电影| 亚洲精品综合久久中文字幕| 久久亚洲综合网| 亚洲一区尤物| 欧美三区美女| 日韩小视频在线观看专区| 免费观看不卡av| 欧美在线黄色| 国产农村妇女精品一二区| 在线亚洲免费| 亚洲精品日韩在线观看| 老司机午夜精品视频| 狠狠爱综合网| 久久国产精品电影| 亚洲欧美日韩国产中文在线| 国产精品福利在线观看| 一区二区欧美激情| 亚洲欧洲一区| 欧美精品一区二区三区四区| 亚洲黄色在线观看| 免费久久99精品国产自| 久久久久一本一区二区青青蜜月| 国产欧美日韩专区发布| 午夜免费在线观看精品视频| 一区二区三区导航| 欧美婷婷久久| 亚洲一区二区视频| 一区二区日韩欧美| 欧美视频一区二区在线观看| 亚洲天堂男人| 正在播放日韩| 国产精品乱人伦中文| 亚洲欧美中文日韩在线| 亚洲欧美成人一区二区三区| 国产精品久久毛片a| 午夜宅男欧美| 午夜精品美女自拍福到在线| 国产午夜精品久久久久久久| 久久久久久综合| 久久久久久久久久久久久女国产乱| 好吊一区二区三区| 欧美成人免费视频| 欧美激情中文不卡| 亚洲午夜精品| 亚洲欧美日本日韩| 国产性色一区二区| 免费日韩av片| 欧美激情欧美狂野欧美精品| 在线亚洲欧美视频| 亚洲资源av| 韩国成人福利片在线播放| 欧美成人性网| 欧美乱在线观看| 午夜亚洲激情| 久久成人国产| 亚洲精品国产精品国自产观看| 亚洲精品视频一区二区三区| 国产精品s色| 久久婷婷国产综合精品青草| 麻豆91精品91久久久的内涵| 国产精品99久久99久久久二8| 亚洲欧美一区二区三区在线| 国产视频亚洲精品| 亚洲福利国产精品| 国产精品久久久久9999高清| 狼狼综合久久久久综合网| 欧美精品久久一区二区| 久久精品99国产精品| 男人天堂欧美日韩| 欧美一区二区日韩| 欧美成人69av| 午夜视频一区二区| 免费人成网站在线观看欧美高清| 亚洲一区二区三区色| 久久精品最新地址| 亚洲综合色丁香婷婷六月图片| 久久精品二区三区| 这里是久久伊人| 久久久久成人网| 午夜伦理片一区| 欧美成人午夜| 久久男人资源视频| 欧美日韩在线观看一区二区| 蜜臀av国产精品久久久久| 欧美日韩国产页| 久久天天躁狠狠躁夜夜爽蜜月| 欧美69wwwcom| 久久精品国产99| 欧美激情视频网站| 99精品久久久| 久久在线视频在线| 亚洲无线观看| 香蕉久久夜色| 亚洲一卡久久| 久久久亚洲人| 亚洲欧美亚洲| 欧美三级午夜理伦三级中文幕| 久久婷婷丁香| 国产精品久久激情| 日韩视频国产视频|