<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 々上善若水々 閱讀(752) 評論(0)  編輯  收藏 所屬分類: 數據結構與算法

    主站蜘蛛池模板: 91精品视频免费| 免费阿v网站在线观看g| 99视频有精品视频免费观看| 91人人区免费区人人| 国产又黄又爽又猛免费app| 国产成人免费ā片在线观看| 久久精品国产精品亚洲下载| 久久丫精品国产亚洲av| 亚洲日韩AV一区二区三区中文| 黄页网址大全免费观看12网站| 波多野结衣免费一区视频| 18禁男女爽爽爽午夜网站免费 | 狠狠热精品免费观看| 青青操免费在线观看| 黄页网站免费观看| 亚洲国产成人久久综合区| 亚洲免费视频网站| 亚洲精品久久无码av片俺去也| 人成午夜免费大片在线观看| 免费国产污网站在线观看15| 日本黄页网站免费| 日韩亚洲欧洲在线com91tv| 亚洲精品午夜国产va久久| 久99久无码精品视频免费播放| 日本黄网站动漫视频免费| 亚洲精品岛国片在线观看| 亚洲精品视频在线观看免费| 羞羞漫画登录页面免费| 99国产精品免费视频观看| 免费国产小视频在线观看| 久久亚洲精品无码AV红樱桃| 色网站在线免费观看| 亚洲成人免费网站| 中文字幕日韩亚洲| 伊人久久五月丁香综合中文亚洲 | 无码日韩人妻av一区免费| 亚洲夜夜欢A∨一区二区三区| 四虎必出精品亚洲高清| 久久午夜夜伦鲁鲁片无码免费| 国产精品另类激情久久久免费| 亚洲综合一区二区精品导航|