<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 297,  comments - 1618,  trackbacks - 0

             策略模式(strategy) 屬于對(duì)象的行為模式
       1. 定義
            定義一系列的算法,把這些算法一個(gè)個(gè)封裝成單獨(dú)的類(lèi).策略模式是對(duì)算法的封裝,是把使用算法的責(zé)任和算法本身分割開(kāi),委派給不同的對(duì)象管理.
       2. 使用的原因
            在某些情況下,當(dāng)客戶端需求不同時(shí),會(huì)要求不同的算法實(shí)現(xiàn),為使算法的增減,修改都不會(huì)影響環(huán)境和客戶端,可采用策略模式解決此種情況。  
       3. 適用的情況舉例
          
    1)一電子商務(wù)網(wǎng)站對(duì)各類(lèi)書(shū)提供不同的折扣算法,有的沒(méi)有折扣,有的提供10%的折扣,那么在計(jì)算圖書(shū)的價(jià)格時(shí),為防止通過(guò)過(guò)多而擴(kuò)展性差的選擇語(yǔ)句來(lái)決定采取何種折扣算法,可采取策略算法有效解決問(wèn)題;
           2)假使你是一推銷(xiāo)員,你腦海中已存儲(chǔ)了很多種推銷(xiāo)方法,每種方法適應(yīng)一類(lèi)人群,當(dāng)你去推銷(xiāo)時(shí),你要根據(jù)不同的對(duì)象去決定該用何種方式推銷(xiāo);
           3)很多人在追求MM時(shí),會(huì)根據(jù)不同的MM做出不同的追求策略,有的MM喜歡天南海北的玩,有的MM喜歡肆無(wú)忌憚的吃,有的MM喜歡成天成天的打扮,有的......,情場(chǎng)老手會(huì)根據(jù)具體情況具體分析,而有些不開(kāi)竅的人,采取統(tǒng)一策略,而且在判斷失誤時(shí)不會(huì)做出策略改變,導(dǎo)致屢戰(zhàn)屢敗,都是因?yàn)椴呗阅J經(jīng)]學(xué)好的結(jié)果(啊哈,跟我一起上補(bǔ)習(xí)班)。
       4. 類(lèi)圖結(jié)構(gòu)及說(shuō)明
            
    1) 簡(jiǎn)略類(lèi)圖
              
           2)說(shuō)明
                左上邊的類(lèi)為環(huán)境(Context)角色,它只有一個(gè)Strategy類(lèi)的應(yīng)用;
                右上方的類(lèi)為抽象策略角色,通常為抽象類(lèi)或接口;
                下方的三個(gè)類(lèi)繼承自抽象策略類(lèi),它們屬于不同的具體策略實(shí)現(xiàn)類(lèi)。它們包裝了相關(guān)的算法和行為。
       5. 應(yīng)用舉例
            
    1)問(wèn)題背景
                 在評(píng)議某老師的教學(xué)情況時(shí),可能采取如下方式:
                 讓所教的班的學(xué)生對(duì)學(xué)校定出的評(píng)議老師的各項(xiàng)指標(biāo)進(jìn)行打分,最后統(tǒng)計(jì)該老師所得的平均分?jǐn)?shù),如果平均分在60分以上,就算教學(xué)合格。
                還可能采取如下方式:
                讓學(xué)生在“合格”、“基本合格”和“不合格”中勾選一項(xiàng),最后統(tǒng)計(jì)認(rèn)為選擇“合格”與“基本合格”的比例,如果超過(guò)60%就算教學(xué)情況合格。
                還可能有其他種方式。
             2)考慮方案
                a)最不“雅觀"的實(shí)現(xiàn)方案
                     將所有的業(yè)務(wù)邏輯都放在客戶端中,利用條件選擇語(yǔ)句決定使用哪一個(gè)算法。
                     缺點(diǎn):當(dāng)增加新的方式時(shí),需大量修改客戶端代碼,使得客戶端難以維護(hù)。
                b)比a方案進(jìn)了一步,考慮在客戶端加入繼承,不同方式的算法在不同的子類(lèi)中實(shí)現(xiàn),但因此時(shí)環(huán)境和行為耦合在了一起,造成兩者不能單獨(dú)演化。
                c)針對(duì)b方案的環(huán)境和行為耦合在一起了這個(gè)缺點(diǎn),將環(huán)境和行為分開(kāi)。環(huán)境負(fù)責(zé)的工作是負(fù)責(zé)維護(hù)和查詢行為類(lèi),而各行為類(lèi)負(fù)責(zé)算法的實(shí)現(xiàn)。c方案的實(shí)現(xiàn)其實(shí)就是策略模式的應(yīng)用。
            3)代碼模擬實(shí)現(xiàn)
                   待補(bǔ)充。
    參考書(shū)籍:《Java與模式》
                        《Patterns in Java》

    posted on 2007-04-11 00:11 阿蜜果 閱讀(2343) 評(píng)論(17)  編輯  收藏 所屬分類(lèi): Design Pattern


    FeedBack:
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 00:16 | αβγ
    沙發(fā)  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 00:24 | αβγ
    期待完善。希望能提供實(shí)例。  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 08:52 | 阿蜜果
    呵呵,昨晚累了,今晚繼續(xù),啊哈
    今日廣州陽(yáng)光真好噢!  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 09:13 | 劉甘泉
    我來(lái)給個(gè)實(shí)例
    //A策略
    public class Astragety implements Istragety{

    public String doSomething(String ori) {
    return ori+"AA";
    }
    }
    //B策略
    public class Bstragety implements Istragety{
    public String doSomething(String ori) {
    return ori+"BB";
    }
    }
    //策略接口
    public interface Istragety {
    public String doSomething(String ori);
    }
    //使用策略的上下文
    public class StragetyContext {
    private Istragety istragety;

    public void setIstragety(Istragety istragety) {
    this.istragety = istragety;
    }

    public void doWhatUWant(){
    System.out.println(istragety.doSomething("what u want:"));
    }
    }

    //開(kāi)始使用吧~~~~~
    public class Stragety {
    public static void main(String[] args) {
    StragetyContext stragetyContext = new StragetyContext();
    stragetyContext.setIstragety(new Astragety());
    stragetyContext.doWhatUWant();
    stragetyContext.setIstragety(new Bstragety());
    stragetyContext.doWhatUWant();
    }
    }  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 09:20 | 藍(lán)色天空的囚徒
    贊一個(gè).  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 09:21 | cresposhi
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 09:41 | coolfish
    學(xué)完了策略模式,希望樓主拿 模板方法 模式 做個(gè)對(duì)比,寫(xiě)點(diǎn)心得. 深入理解 繼承和委派的區(qū)別.  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 10:09 | 劉甘泉
    模板模式和策略模式?jīng)]有相同的東西~~~~~~~
    模板模式是用于去除重復(fù)代碼的。。
    策略是用于不同的環(huán)境下的不同解決方法  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))[未登錄](méi)
    2007-04-11 10:30 | 阿蜜果
    @coolfish
    多謝建議。  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 13:48 | @#$%
    不錯(cuò)
    挺巧的  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 17:30 | G_G
    我 提個(gè)意見(jiàn) 把 
    這還有 硬代碼的 填充 stragetyContext.setIstragety(new Astragety());

    我們可以 用 Spring 來(lái)填充它哦!!!

    那這個(gè) 就無(wú)敵了 哈哈   回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 17:39 | cresposhi
    @G_G
    大哥,MM是在做設(shè)計(jì)模式的sample。。。怎么spring都來(lái)了。。。
    用spring填充那是另外幾種模式的結(jié)合。。。
    順便說(shuō)一句IoC也就是DI模式也不是無(wú)敵的 :(  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 21:22 | 阿蜜果
    @@#$%
    ?巧什么
      回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-11 21:26 | 阿蜜果
    @劉甘泉
    嘻嘻,不錯(cuò)!  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))
    2007-04-13 14:08 | hs
    八錯(cuò)!八錯(cuò)!  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))[未登錄](méi)
    2007-11-09 10:51 | Steve
    Is this just identical with Bridge Pattern ?  回復(fù)  更多評(píng)論
      
    # re: 設(shè)計(jì)模式學(xué)習(xí)筆記--策略模式(待續(xù))[未登錄](méi)
    2007-11-09 11:04 | 阿蜜果
    <2007年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

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

          Power Designer系統(tǒng)分析與建模實(shí)戰(zhàn)  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    相冊(cè)

    關(guān)注blog

    積分與排名

    • 積分 - 2294312
    • 排名 - 3

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 日日夜夜精品免费视频| 成人免费视频软件网站| 222www在线观看免费| 99久久久国产精品免费无卡顿| 成人奭片免费观看| 国产一区二区三区在线免费| 亚洲综合最新无码专区| 亚洲成a人片在线观看中文动漫| 亚洲日韩乱码中文无码蜜桃| 亚洲精品无码成人| 一级毛片大全免费播放| 久久久久免费精品国产小说| 91视频国产免费| 亚洲国产精品13p| 精品日韩亚洲AV无码一区二区三区 | 婷婷亚洲综合一区二区| 成人无码精品1区2区3区免费看| 99热免费在线观看| 日韩免费三级电影| 亚洲成av人片天堂网| 67194在线午夜亚洲| 免费激情网站国产高清第一页 | 免费在线中文日本| 日韩免费a级毛片无码a∨| 亚洲国产午夜福利在线播放| 亚洲激情视频在线观看| 亚洲国产无线乱码在线观看| 国产一级高青免费| 免费人成在线视频| 亚洲中文字幕久久精品无码喷水| 亚洲成av人片不卡无码| 黄网站色视频免费观看45分钟| 无码精品国产一区二区三区免费 | 国产免费怕怕免费视频观看| 亚洲成AV人片在线观看无码| 亚洲欧美日韩综合久久久久| 国产免费阿v精品视频网址| 天天摸夜夜摸成人免费视频| 日本亚洲欧洲免费天堂午夜看片女人员| 亚洲 日韩经典 中文字幕| 91精品成人免费国产|