时间:2021-05-20
对于使用过宏的朋友应该知道,利用宏可以实现一个键绑定多个技能。例如如果排在前面的技能有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 = 0; 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 冰血冷脉技能,冷却时间2分钟 */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(); }}测试结果:
正在施放--》冰血冷脉施放--》寒冰箭总结:责任链模式主要用于,一个请求,可能有多个对象要对其处理的情况。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Java经典设计模式之责任链模式。分享给大家供大家参考,具体如下:责任链模式:多个对象由其对象对应下家的引用连成一条链,请求在这个链上传递,直到链
本文实例讲述了Java责任链设计模式。分享给大家供大家参考,具体如下:一代码abstractclassAbstractHandler{privateHandle
本文实例讲述了java使用责任链模式处理学生请假问题。分享给大家供大家参考,具体如下:一.模式定义在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来,
职责链模式简介及UML职责链也叫责任链,他是一种行为型模式,它为请求创建了一个接收请求者对象的链,并将请求沿着这条链传递到目标对象去处理。该模式最简单的实现方式
本文实例讲述了Python设计模式之职责链模式原理与用法。分享给大家供大家参考,具体如下:职责链模式(ChainOfResponsibility):使多个对象都