新聞中心
1.初識模板方法模式

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。成都創(chuàng)新互聯(lián)公司將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。
讀了這么多年書,大家或多或少都遇到過這樣的情況吧:老師在黑板上寫了一些題,讓學(xué)生記下去,然后寫答案在交上來。(還記得那個時候我近視看不清黑板的痛苦啊,那個時候我只能別人抄完了,我在照他們抄。)其實這就是模板方法模式能夠解決的問題了,分析一下我們便知道大家每個人抄的題應(yīng)該都是一樣的吧,只有答案可能不一樣,要是大家抄的選擇題,那么不一樣的東西就只有一個答案,區(qū)別可能就是A,B,C,D。可是每個人卻都要抄一遍題,要是遇到一個我這樣的近視,還可能把題抄錯了。這就體現(xiàn)出來模板方法模式的重要性了,建立一個模板類,類中包括:模板方法和子類實現(xiàn)的方法。這里模板方法為題目+答案(調(diào)用類中的答案方法),子類實現(xiàn)的方法就是答案方法,這樣做就避免了每個子類總都包含題目,使得每個子類中只需要包含答案。說恐怕怎么說也不直觀,還是看看代碼實現(xiàn)吧。
模板方法模式:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。
2.模板方法模式應(yīng)用舉例
看看具體的模板類和具體實現(xiàn)是怎么實現(xiàn)的吧:
- class TestpaperTemplate
- {
- public :
- void templateMethod()//模板方法,定義了要完成操作的骨架
- {
- question1();
- answer1();
- question2();
- answer2();
- };
- void question1()
- {
- cout<<"問題一:二叉樹每個節(jié)點兒子節(jié)點數(shù)目有多少:\n";
- cout<<"A.最多1個 B.最多兩個 C.任意多個 D.至少一個";
- };
- void question2()
- {
- cout<<"問題二:完全二叉樹葉子節(jié)點可能在哪一層:\n";
- cout<<"A.任意一層 B.最后一層 C.最后兩層 D.最后三層";
- };
- protected:
- virtual void answer1();//這兩個方法的具體實現(xiàn)延時到子類,因不同的類而不同
- virtual void answer2();
- };
- class StudentA :public TestpaperTemplate
- {
- virtual void answer1()
- {
- cout<<"答案:B"<
- }
- virtual void answer2()
- {
- cout<<"答案:A"<
- }
- };
- class StudentB :public TestpaperTemplate
- {
- //此處和StudentA中類似,只是每個學(xué)生選擇的答案不同
- };
這樣一來,每個學(xué)生只需要寫自己的答案就好了,避免抄題這種無用功了。
3.使用模板方法模式的場合和好處
模板方法模式是通過把不變的行為搬移到超類,去除子類中的重復(fù)代碼來體現(xiàn)它的優(yōu)勢的。也就提供了一個很好的代碼復(fù)用平臺。如果以后遇到這種情況:有一個過程需要執(zhí)行,這個過程包括一系列步驟,整個過程從高層次看是一樣的,但是每個步驟的具體細節(jié)不一樣,這時我們就可以考慮這種模板方法模式了。即當不變的行為和可變的行為在類中混在一起的時候,不變的行為就會在子類中重復(fù)出現(xiàn),這是通過模板方法模式把這些行為搬移到單一的地方實現(xiàn)(超類),而把不同的部分在子類實現(xiàn),這就使子類擺脫了重復(fù)的不變行為的困擾。 應(yīng)用實例:HttpServlet類提供了一個service()方法.這個方法調(diào)用了一個或是多個do方法,完成對客戶端發(fā)起的請求的處理,這些do方法則是由具體的HttpServlet類提供的.那么這里的service()方法就是一個摸板方法.
網(wǎng)站標題:設(shè)計模式之模板方法模式Template
網(wǎng)頁路徑:http://m.5511xx.com/article/coocdpj.html


咨詢
建站咨詢
