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

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

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

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    策略模式及實現

     策略模式,又叫算法簇模式,就是定義了不同的算法族,并且之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。

        策略模式的好處在于你可以動態的改變對象的行為。 設計原則是把一個類中經常改變或者將來可能改變的部分提取出來,作為一個接口(c++z中可以用虛類),然后在類中包含這個對象的實例,這樣類的實例在運行時就可以隨意調用實現了這個接口的類的行為。下面是一個例子。
    /* 
    這是一個表現僧人和道士的程序,僧人光頭,使用棍子做武器,道士長小胡子,使用拂塵作武器 
    */
     

    //處理長相接口 
    interface LooksBehavier 

      
    public void display(); 
    }
     
      
    //處理所使用的武器接口 
    interface WeaponBehavier 

     
    public void useWeapon(); 
    }
     

    //角色基類 
    class Role 
      
    public int heght; //身高 
      public int sex; //性別 
      public WeaponBehavier weapon; //處理武器接口的實例 
      public LooksBehavier looks; //處理長相的接口的實例 
      public void display() //顯示長相 
      
        looks.display(); 
      }


    public void weapon() //設置所使用的武器 

      weapon.useWeapon(); 
    }


    }
     

    //道士長相類,實現了長相接口 
    class TaoistBehavier implements LooksBehavier 

      
    public void display() //實現接口函數 

      System.out.println(
    "I'm a taolist with long white goatee"); 
    }
     

    }
     

    //和尚長相類,實現了長相接口 
    class BonzeBehavier implements LooksBehavier 

      
    public void display() //實現接口函數 
      
        System.out.println(
    "I'm a Bonze with no hair"); 
      }
     

    }
     

    //道士武器類,實現了處理武器接口 
    class TaoistWeapon implements WeaponBehavier 

      
    public void useWeapon() //實現了處理武器接口函數 
      
        System.out.println(
    "My weapon is horsetail whisk");; 
      }
     
    }
     

    //和尚武器類,實現了處理武器接口 
    class BonzeWeapon implements WeaponBehavier 

      
    public void useWeapon() //實現了處理武器接口函數 

      System.out.println(
    "My weapon is truncheon");; 
    }
     
    }
     

    //道士 
    class Taoist extends Role 

      
    public Taoist() 

      looks 
    = new TaoistBehavier(); 
      weapon 
    = new TaoistWeapon(); 
     }
     
    }
     

    //和尚 
    class Bonze extends Role 

      
    public Bonze() 
      

       looks 
    = new BonzeBehavier(); 
       weapon 
    = new BonzeWeapon(); 
      }
     
     
    public void changeWeapon() 

      weapon 
    = new TaoistWeapon(); 
      System.out.println(
    "change weapon"); 
     }
     
    }
     

    public class RoleBase
      
    public static void main(String [] arg) 
      

        Taoist taoistObj 
    = new Taoist(); 
        Bonze bonzeObj 
    = new Bonze(); 
        taoistObj.display(); 
        taoistObj.weapon(); 
        bonzeObj.display(); 
        bonzeObj.weapon(); 
        bonzeObj.changeWeapon(); 
    //改變和尚使用的武器 
        bonzeObj.weapon(); 
      }
     
    }
     


    輸出結果為:
    I'm a taolist with long white goatee 
    My weapon is horsetail whisk 
    I
    'm a Bonze with no hair 
    My weapon is truncheon 
    change weapon 
    My weapon is horsetail whisk 


    posted on 2008-03-07 09:39 々上善若水々 閱讀(759) 評論(0)  編輯  收藏 所屬分類: 數據結構與算法

    主站蜘蛛池模板: 成人性生交视频免费观看| 一区二区三区免费在线视频| 久久青草免费91观看| 精品国产亚洲男女在线线电影| MM1313亚洲国产精品| 国产大片51精品免费观看| 亚洲第一成年网站视频| 美女视频黄的全免费视频| 亚洲AV成人一区二区三区在线看 | 日本卡1卡2卡三卡免费| 亚洲AV无码成人网站久久精品大| 99麻豆久久久国产精品免费| 久久青青成人亚洲精品| 永久免费视频网站在线观看| 亚洲丝袜中文字幕| 国产乱色精品成人免费视频| 美女视频黄频a免费| 亚洲五月综合缴情在线观看| 男的把j放进女人下面视频免费| 91在线亚洲精品专区| 久久久久久久久免费看无码| 老司机午夜精品视频在线观看免费| 2048亚洲精品国产| 91福利视频免费| 亚洲欧美日韩综合久久久| 国产一级理论免费版| 日韩精品无码免费专区网站| 亚洲欧洲国产视频| 日本不卡高清中文字幕免费| 精品国产呦系列在线观看免费 | 亚洲欧美中文日韩视频| 亚洲中文字幕丝袜制服一区| 久久久久久免费一区二区三区| 亚洲国产成人精品久久| 免费一级肉体全黄毛片| 久久国产精品一区免费下载| 亚洲Av无码国产一区二区| 亚洲av最新在线网址| 日韩精品无码人妻免费视频| 最近更新免费中文字幕大全| 亚洲首页国产精品丝袜|