매크로를 사용해보신 분들은 매크로를 사용하여 여러 스킬을 하나의 키에 묶을 수 있다는 점을 아셔야 합니다. 예를 들어 1위 스킬에 CD가 있다면 해당 스킬은 건너뛰고 다음 스킬을 실행하게 됩니다. 제가 DK를 할 때 몬스터와 싸울 때 버튼 하나만 누르고 계속 누르고 있던 기억이 납니다. 서블릿의 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(); } }
테스트 결과:
正在施放--》冰血冷脉 施放--》寒冰箭
요약: 책임 사슬 모델은 요청에 처리할 개체가 여러 개 있을 수 있는 상황에 주로 사용됩니다.
Java 디자인 패턴의 책임 사슬 모델 소개와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!
관련기사: