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