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

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

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

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
    策略模式
         它屬于對象行為型模式,主要針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發生變化。通常,策略模式適用于當一個應用程序需要實現一種特定的服務或者功能,而且該程序有多種實現方式時使用。
    它由以下幾個部份組成:
        1.環境對象:該類中實現了對抽象策略中定義的接口或者抽象類的引用。
        2.抽象策略對象:它可由接口或抽象類來實現。
        3.具體策略對象:它封裝了實現同不功能的不同算法。
    各個組成部份之間的關系為:
       
    舉例:
    策略接口類:
    package strategy;

    /**
     * <ul>
     * <li>Title:[IStrategy]</li>
     * <li>Description: [策略接口]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-7-28]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public interface IStrategy
    {   
        
    public void oparator();
    }


    具體策略類A:
    package strategy;

    public class StrategyA implements IStrategy
    {

        
    public void oparator()
        
    {
            System.out.println(
    "十而圍之");
        }
       
    }


    具體策略類B:
    package strategy;

    public class StrategyB implements IStrategy
    {

        
    public void oparator()
        
    {
            System.out.println(
    "五而攻之");
        }
       

    }


    具體策略類C
    package strategy;

    public class StrategyC implements IStrategy
    {
        
    public void oparator()
        
    {
            System.out.println(
    "敵而分之");
        }
       

    }



    上下文環境類:
    package strategy;

    /**
     * <ul>
     * <li>Title:[Context]</li>
     * <li>Description: [上下文環境]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-7-28]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public class Context
    {   
        
    /** 策略 */
        
    private IStrategy strategy;
        
        
    public Context(IStrategy strategy)
        
    {
            
    this.strategy = strategy;
        }

        
        
    /**
         * <ul>
         * <li>Description:[作戰]</li>
         * <li>Created by [Huyvanpull] [2011-7-28]</li>
         * <li>Midified by [modifier] [modified time]</li>
         * </ul>
         
    */

        
    public void fight()
        
    {
            
    this.strategy.oparator();
        }

    }


    測試類:
    package strategy;

    public class Test
    {   
        
    public static void main(String[] args)
        
    {
            
    // 我于敵人力量十倍
            Context context = new Context(new StrategyA());
            context.fight();
            
            
    // 我于敵人力量五倍
            context = new Context(new StrategyB());
            context.fight();
            
            
    // 我于敵人力量一倍
            context = new Context(new StrategyC());
            context.fight();
        }

    }


    策略模式的優點:
        1.提供了一種代替繼承的方法,而且既保持了繼承的優點,又保持了繼承的靈活性.
        2.封裝了算法,使系統更加靈活.

    策略模式的缺點:
        每一個策略增加了一個類,使系統的類會過多.
    posted on 2011-07-28 01:31 HUIKK 閱讀(267) 評論(0)  編輯  收藏 所屬分類: Design Patterns
    主站蜘蛛池模板: 成人性生交大片免费看好| 污网站在线观看免费| 黄页免费在线观看| 国产亚洲av片在线观看播放| 美女视频黄.免费网址| 免费看无码自慰一区二区| 亚洲一区二区三区丝袜| 成人特黄a级毛片免费视频| 亚洲乱码在线观看| 成人黄软件网18免费下载成人黄18免费视频 | 亚洲第一视频在线观看免费| 免费a级毛片永久免费| 日本一区二区三区在线视频观看免费 | 久久久久免费精品国产小说| 亚洲AV成人一区二区三区AV| 91高清免费国产自产拍2021| 久久久久亚洲AV成人片| 免费视频专区一国产盗摄| 国产精品亚洲综合久久| 免费永久看黄在线观看app| 五月天婷婷精品免费视频| 亚洲人成人77777网站| 在线观看免费av网站| 亚洲国产精品yw在线观看| 久久综合AV免费观看| 又黄又大的激情视频在线观看免费视频社区在线| 国产乱弄免费视频| a级片免费在线播放| 亚洲性一级理论片在线观看| 国产大片免费观看中文字幕| 精品熟女少妇aⅴ免费久久 | 亚洲一区二区三区播放在线| 永久免费无码网站在线观看| 精品无码国产污污污免费网站国产| 亚洲视频一区调教| 国产成人3p视频免费观看| 日批视频网址免费观看| 亚洲高清有码中文字| 亚洲欧洲日产国码高潮αv| 最近2019中文字幕免费大全5| 亚洲成a人无码亚洲成av无码|