亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

模板方法模式

系統 1850 0
http://dev.yesky.com/325/2061825.shtml
http://zh.wikipedia.org/wiki/%E6%A8%A1%E6%9D%BF%E6%96%B9%E6%B3%95

模板方法模式

四、適用情況

  根據上面對定義的分析,以及例子的說明,可以看出模板方法適用于以下情況:

  1) 一次性實現一個算法的不變的部分,并將可變的行為留給子類來實現。

  2) 各子類中公共的行為應被提取出來并集中到一個公共父類中以避免代碼重復。其實這可以說是一種好的編碼習慣了。

  3) 控制子類擴展。模板方法只在特定點調用操作,這樣就只允許在這些點進行擴展。比如上面runBare()方法就只在runTest前面適用setUp方法。如果你不愿子類來修改你的模板方法定義的框架,你可以采用兩種方式來做:一是在API中不體現出你的模板方法;二、將你的模板方法置為final就可以了。

  可以看出,使用模板方法模式可以將代碼的公共行為提取出來,達到復用的目的。而且,在模板方法模式中,是由父類的模板方法來控制子類中的具體實現。這樣你在實現子類的時候,根本不需要對業務流程有太多的了解。

-----------------------------

模板方法模式定義了一個算法的步驟,并允許次類別為一個或多個步驟提供其實踐方式。讓次類別在不改變算法架構的情況下,重新定義算法中的某些步驟。在軟件工程中,它是一種軟件設計模式,和C++模板沒有關連。

[編輯] 用法
模板方法模式多用在:

某些類別的算法中,實做了相同的方法,造成程式碼的重復。
控制次類別必須遵守的一些事項。
...
[編輯] 用例(Java)
     
/**
  * An abstract class that is common to several games in
  * which players play against the others, but only one is
  * playing at a given time.
  */
 
 abstract class Game {
 
     private int playersCount;
 
     abstract void initializeGame();
 
     abstract void makePlay(int player);
 
     abstract boolean endOfGame();
 
     abstract void printWinner();
 
     /* A template method : */
     final void playOneGame(int playersCount) {
         this.playersCount = playersCount;
         initializeGame();
         int j = 0;
         while (!endOfGame()){
             makePlay(j);
             j = (j + 1) % playersCount;
         }
         printWinner();
     }
 }
 
//Now we can extend this class in order to implement actual games:
 
 class Monopoly extends Game {
 
     /* Implementation of necessary concrete methods */
 
     void initializeGame() {
         // ...
     }
 
     void makePlay(int player) {
         // ...
     }
 
     boolean endOfGame() {
         // ...
     }
 
     void printWinner() {
         // ...
     }
 
     /* Specific declarations for the Monopoly game. */
 
     // ...
 
 }
 
 class Chess extends Game {
 
     /* Implementation of necessary concrete methods */
 
     void initializeGame() {
         // ...
     }
 
     void makePlay(int player) {
         // ...
     }
 
     boolean endOfGame() {
         // ...
     }
 
     void printWinner() {
         // ...
     }
 
     /* Specific declarations for the chess game. */
 
     // ...
 
 }

  

模板方法模式


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 牛人盗摄一区二区三区视频 | 亚洲精品伊人久久久久 | 一区二区3区免费视频 | 国产在线精品香蕉综合网一区 | 免费在线中文字幕 | 日本天天色 | 香蕉视频网站在线播放 | 久久影院国产 | 中文字幕伊人久久网 | 欧美特级大片 | 羞羞视频网页 | 欧美成人观看 | 五月婷婷色视频 | 亚洲欧洲国产成人精品 | 99久久99热久久| 久热这里只精品99re8久 | 97在线观看免费 | 人人揉人人爽五月天视频 | 国产精品网址你懂的 | 国产极品粉嫩福利在线观看 | 国产伦精品一区二区 | 高清国产美女在线观看 | 亚洲国产系列一区二区三区 | 久久水蜜桃 | 成人欧美一区二区三区在线观看 | 韩国成人毛片aaa黄 韩国高清不卡一区二区 | 亚洲欧美在线精品一区二区 | 九九九色视频在线观看免费 | 久久国产区 | 亚洲日本va中文字幕在线不卡 | 亚洲综合成人网 | 久久国产免费福利资源网站 | 五月精品| 成人黄色一级片 | 四虎2019| 999国产高清在线精品 | 久久久久国产一级毛片高清片 | 中文字幕无线码中文字幕免费 | 亚洲国产精品一区二区九九 | 性欧美4k高清精品 | 成人夜色视频网站在线观看 |