**寫的不夠規範,目的是為了縮短文章篇幅,實際中請不要這樣做。
1、概述
如其名,模板,也就是說,有乙個已經做好的模板把框架做好了,剩下的,只需要我們將內容填充到模板下。 例如修房屋,框架結構搭建完成(模板框架搭建完成),工人砌磚(子類具體實現內容),砌磚有多種方式。
還有,銀行,對客戶而言,我們的步驟是查不多一樣的: 取號、排隊、辦理業務、評價業務(可能有)。取號和排隊對每個人來說都是一樣的, 辦理業務和評價因人而異,a是辦理取錢業務的,c是辦理匯款業務的,d是辦理開戶業務的... 當然,評價更是因人而異。
模板方法 和 上面的例子就很類似,抽象類中定義了大家公有的部分( 好比銀行取號排隊),這些在抽象類中實現,非共有的部分由子類實現(好比銀行辦理業務和評價)。
下面以銀行客戶業務為例。
2、業務流程類(抽象)
定義了業務流程和公有的業務。
//3、因人而異的業務這裡以取錢為例銀行業務流程(從上到下)
class
step_bank_job
;
//排隊
virtual
void get_in_line() ;
//辦理業務(每個人要辦理的業務是不一樣的)
virtual
void do_job() = 0
;
//評價業務(每個人的評價也可能不一樣)
virtual
void comment(std::string str_comment) = 0
;};
//4、呼叫範例取錢class step_bank_job_withdraw : public
step_bank_job
//評價業務(每個人的評價也可能不一樣)
void comment(std::string str_comment)
};
15、業務辦理結果:void
call_template()29
10//
辦理業務
11 pwithdraw->get_id();
12 pwithdraw->get_in_line();
13 pwithdraw->do_job();
14 pwithdraw->comment(std::string("
5星好評
"));
15 }
c 設計模式之模板方法模式
模板方法模式是指在乙個方法中定義乙個演算法的骨架,將一些步驟延遲到子類中 模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟 抽象方法由子類實現 這樣可以確保演算法的結構不變,由子類提供部分實現 策略模式和模板方法模式都封裝演算法,乙個用組合,乙個用繼承 測試 include...
設計模式之模板方法模式(C )
模板方法模式,定義乙個操作中的演算法的股價,而將一些步驟延遲到了子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。說白了就是有乙個演算法有很多部分,這個演算法在基類中已經定義好了。而演算法中的各個部分都寫成各個成員函式了。然後在子類中可以覆蓋這些成員函式,從而實現不...
C 設計模式 之 設計模式概述
一,為什麼學習設計模式?二,什麼是設計模式?三,怎麼描述設計模式?四,設計模式有哪幾類?五,設計模式之間的關係?六,學習設計模式的四種狀態 作為攻城獅 設計模式 這個詞應該都不陌生,那麼,你有靜下心來系統的學習它一下嗎?本系列博文描述了物件導向設計模式的實現。之所以取名為 c 設計模式,是因為我在文...