<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)  編輯  收藏 所屬分類: 數據結構與算法

    主站蜘蛛池模板: 亚洲不卡无码av中文字幕| 亚洲一区二区三区免费在线观看| 热99re久久免费视精品频软件| 久久亚洲中文字幕精品有坂深雪 | 久久久无码精品亚洲日韩软件| 亚洲色精品三区二区一区| 亚洲精品免费网站| 亚洲已满18点击进入在线观看| 美女网站免费福利视频| 67194在线午夜亚洲| 男人的好看免费观看在线视频| 亚洲AV无码乱码在线观看代蜜桃 | 国内少妇偷人精品视频免费| 亚洲AV无码一区东京热| 免费A级毛片无码专区| 777亚洲精品乱码久久久久久 | 狠狠久久永久免费观看| 亚洲av中文无码乱人伦在线观看| 国产精品99久久免费| 欧洲精品码一区二区三区免费看| 亚洲综合色视频在线观看| 成人免费区一区二区三区| 久久亚洲私人国产精品vA| 久久久久久国产a免费观看黄色大片| 亚洲人成电影网站久久| 免费一级毛片正在播放| 中文字字幕在线高清免费电影| 亚洲高清在线视频| 日韩欧美一区二区三区免费观看| 亚洲1区2区3区精华液| 亚洲精品中文字幕乱码三区 | 免费国产高清毛不卡片基地| 亚洲精品无码久久久久去q| 亚洲精品在线免费观看视频| 亚洲经典千人经典日产| 久久影视综合亚洲| 四虎最新永久免费视频| 免费人妻精品一区二区三区| 亚洲爆乳精品无码一区二区三区| 无人在线直播免费观看| 黄网站色成年片大免费高清 |