熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

java 設計模式之責任鏈模式

2013-11-23 19:40:25  來源: Java高級技術 
    不知道大家都寫過宏沒有就是一個鍵綁定多個技能如果排在前面的技能有CD則跳過此技能會執行之後的技能記得曾經玩DK打怪的時候就是用一個鍵一直按就行了在servlet裡的doGet和doPost方法我們一把都把doGet請求發動到doPost裡來處理這也是一種責任鏈的模式
   
    這裡有個宏綁定了 冰血冷脈和寒冰箭兩個技能
   
    package responsibility;/** * DOC 技能接口要綁定的技能都要實現這個接口 * */public interface ISkill { public void castSkill()}
   
    package responsibility;import javautilArrayList;import javautilList;/** * DOC 宏類用來把多個技能綁在一起實現一鍵施放 * */public class Macro { /** * DOC 多個技能綁在一起的集合 */ public List<ISkill> skills = new ArrayList<ISkill>() /** * * DOC 按照綁定順序施放技能 */ public void castSkill() { for (int i = ; i < skillssize() i++) { skillsget(i)castSkill() } } /** * DOC 綁定技能 * * @param skill */ public void bindSkill(ISkill skill) { skillsadd(skill) }}
   
    package responsibility;/** * DOC 寒冰箭技能無冷卻時間 * */public class IceArrow implements ISkill { @Override public void castSkill() { Systemoutprintln(施放》寒冰箭 }}
   
    package responsibility;/** * DOC 冰血冷脈技能冷卻時間分鐘 */public class IceBloodFast implements ISkill { @Override public void castSkill() { // 這裡可以用來判斷技能是否在冷卻當中這裡略去了 Systemoutprintln(施放》冰血冷脈 }}
   
    測試類
   
    package responsibility;public class Main
   
    { public static void main(String[] args)
   
    { Macro macro = new Macro()
   
    macrobindSkill(new IceBloodFast())
   
    macrobindSkill(new IceArrow())
   
    macrocastSkill()
   
    }}
   
    測試結果
   
    正在施放》冰血冷脈
   
    施放》寒冰箭
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27276.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.