posts - 297,  comments - 1618,  trackbacks - 0

          ????模板方法(Template Method)模式 屬于對象的行為模式
          1. 定義
          ??? 定義一個操作中算法的骨架,將一些步驟執行延遲到其子類中。模板方法模式是基于繼承的代碼復用的基本技術,該模式的結構和用法也是面向對象設計的核心。
          2. 使用的原因
          ??? 當一個算法的基本骨架已能確定,但算法的實現部分會根據具體情況有所變動,或為了提高算法實現的靈活性時,可考慮采用模板方法(Template Method)模式。
          3. 適用的情況舉例
          ??? eg. 你計劃了向所喜歡的女孩子表白,你已經想好了當晚表白時要進行的具體步驟,例如第一步打電話約該女生出來,第二步與該女生去一家咖啡廳或附近的某公園表白,第三步.......,但還沒想好具體的某些步該怎么樣做時,你可以先定義一個抽象的模板,然后請各好友或自己閉關想出一種或多種來實現之;
          4. 類圖結構及說明
          ???? 1)類圖結構如下所示:


          ?????? 2)類說明
          ??????????? i) AbstractClass:抽象模板類,該類定義了一個或多個抽象操作,以便讓子類實現;并且它給出了一個頂級邏輯的骨架,而邏輯的組成步驟在相應的抽象步驟中,推遲到子類實現。
          ?????????? ii)ConcreteClass:具體模板類,該類實現父類AbstractClass所定義的一個或多個抽象方法,它們是一個頂級邏輯的組成步驟;每一個抽象模板角色都可以有任意多個具體模板角色與之對應,而每一個具體模板角色都可以給出這些抽象方法的不同實現。

          5. 使用舉例
           
          1) 需求:Amigo的老媽大人打算找個女婿,特意為其未來女婿定義需闖的五關,第一關:基本條件,年齡要求:25-30;第二關:考驗其是否love她的女兒;第三關:檢驗其是否老實不花心;第四關:考察其是否尊老愛幼;第五關:觀察該人是否勤奮好學有能力。對于來“應聘”的人(也許還有不少,貌似美美地說),對這五關都會有不同的表現方式;
          ???? 2)分析:Amigo一瞄,嘿,這倒是個模板方法方式的典型好例哦,選女婿的算法骨架已出來了,就是這五關哈,各個“應聘”者提供了第二到五關的具體實現;
          ???? 3)代碼參考實現:
          ????????? i)抽象考察模板類

          public ? abstract ? class ?考察模板? {
          ????
          public ? void ?選女婿()? {
          ??????????? 第一關();
          ??????????? 第二關();
          ??????????? 第三關();
          ??????????? 第四關();
          ?????????????? 第五關();
          ????}

          ?
          ????????????
          ???????? public final void 第一關() {
          ???????????????//年齡限制:25-30
          ?????????}

          ????
          public ? abstract ? void ?第二關();
          ??
          ????
          public ? abstract ? void ?第三關();

          ????
          public ? abstract ? void ?第四關();
          ??
          ????
          public ? abstract ? void ?第五關();

          }
          ??????? ii)考察模板具體實現類,A君過來應聘,經過一段時間的考察,Amigo's mother總結了其實現,具體如下:
          ?????
          public?class?應聘人1的實現?extends?考察模板?{
          ????
          public?void?第二關()?{
          ??????????
          //跟Amigo's?mother's?daughter出去的時候老看路邊美女,汗
          ??????? }

          ??
          ????
          public?void?第三關()?{
          ????????????? ?
          //手機短信響不停,全是"親愛的"
          ??????? }


          ????
          public?void?第四關()?{
          ???????????? ?
          //坐公交車時不給老人小孩讓位子,現在的小伙子啊
          ?????? }

          ??
          ????
          public?void?第五關()?{
          ?????????????
          //一有空就在家里玩游戲,上班猛聊QQ
          ?????? ?}

          }
          ??????? 真是出師不利啊,一來就是個四不行.....
          ??????? 路漫漫,繼續等待應聘人吧。
          ??????? 在此也祝愿單身的朋友們早日找到如意的另一半,不要跟我搶著過光棍節!
          posted on 2007-03-20 22:38 阿蜜果 閱讀(2569) 評論(8)  編輯  收藏 所屬分類: Design Pattern


          FeedBack:
          # re: 設計模式學習筆記--模板方法(Template Method)模式
          2007-03-20 23:05 | 阿蜜果
          剛修正了個bug,呵呵  回復  更多評論
            
          # re: 設計模式學習筆記--模板方法(Template Method)模式
          2007-03-20 23:09 | ant
          有才情的女子,^_^。  回復  更多評論
            
          # re: 設計模式學習筆記--模板方法(Template Method)模式
          2007-03-21 08:58 | Tortoise
          講解的很到位,每次的例子也都是那么的經典,不頂的人,除非頭腦有問題
          要么就不是這個行業的。  回復  更多評論
            
          # re: 設計模式學習筆記--模板方法(Template Method)模式
          2007-03-21 10:25 | 壞男孩
          寫的很生動,證明已經理解了其本質  回復  更多評論
            
          # re: 設計模式學習筆記--模板方法(Template Method)模式 [未登錄]
          2007-03-21 10:35 | 阿蜜果
          to all
          呵呵,謝謝各位的關注,繼續努力中!  回復  更多評論
            
          # re: 設計模式學習筆記--模板方法(Template Method)模式
          2007-03-21 12:28 | cresposhi
          我可不想做頭腦有問題的人,so UP ^_^  回復  更多評論
            
          # re: 設計模式學習筆記--模板方法(Template Method)模式
          2007-03-21 16:03 | 鉛筆刀
          不錯!不錯.
          欣賞了.  回復  更多評論
            
          # re: 設計模式學習筆記--模板方法(Template Method)模式
          2008-01-08 12:35 | hbyufan@hotmail.com
          2007-03-20 23:09 | ant

          有才情的女子,^_^。 回復 更多評論
            回復  更多評論
            
          <2007年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

                生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
                我的作品:
                玩轉Axure RP  (2015年12月出版)
                

                Power Designer系統分析與建模實戰  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關注blog

          積分與排名

          • 積分 - 2299173
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 勃利县| 亳州市| 来宾市| 凤山县| 马公市| 聂拉木县| 赣榆县| 明星| 宽城| 准格尔旗| 光泽县| 彝良县| 固镇县| 青州市| 远安县| 泰安市| 石狮市| 右玉县| 朔州市| 拉孜县| 绥江县| 武宁县| 瓦房店市| 榆中县| 钦州市| 兴和县| 青神县| 洞头县| 扶绥县| 奈曼旗| 聂拉木县| 宜兴市| 惠东县| 本溪| 泰和县| 仁化县| 佛冈县| 江川县| SHOW| 威宁| 正宁县|