<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永久无码精品漫画 | 国产一精品一AV一免费| 亚洲成a人片在线观看老师| 亚洲精品国产第一综合99久久| 波多野结衣免费在线观看| 免费av片在线观看网站| 久久久久国产成人精品亚洲午夜| 国产亚洲Av综合人人澡精品| 日韩免费高清视频| 亚洲乱码国产乱码精华| 国产精品无码免费视频二三区| 亚洲欧洲成人精品香蕉网| jizz18免费视频| 亚洲第一区精品观看| 九九免费观看全部免费视频| 亚洲精品国产精品国自产观看| 无人视频免费观看免费视频| yy6080久久亚洲精品| a一级爱做片免费| 亚洲一区二区三区影院| 久久精品国产免费| 亚洲欧洲日产v特级毛片| 中文字幕av无码无卡免费| 亚洲av无码一区二区三区四区| 国产福利免费在线观看| 青青草国产免费国产是公开| 亚洲人成网亚洲欧洲无码久久| 国产猛男猛女超爽免费视频| 亚洲国产成人久久综合一| aⅴ免费在线观看| 欧美亚洲精品一区二区| MM131亚洲国产美女久久| 日韩电影免费在线观看中文字幕| 亚洲毛片基地日韩毛片基地| 在线免费不卡视频| h视频在线观看免费| 精品亚洲aⅴ在线观看| 国产精品二区三区免费播放心| 男女一进一出抽搐免费视频| 亚洲日韩区在线电影|