>  기사  >  Java  >  Java 디자인 패턴의 책임 사슬 패턴 소개

Java 디자인 패턴의 책임 사슬 패턴 소개

高洛峰
高洛峰원래의
2017-03-18 11:55:311031검색

매크로를 사용해보신 분들은 매크로를 사용하여 여러 스킬을 하나의 키에 묶을 수 있다는 점을 아셔야 합니다. 예를 들어 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 중국어 웹사이트를 주목하세요!

관련기사:

Java에서 Mediator 패턴을 구현하는 코드에 대한 자세한 소개

Java 디자인 패턴의 Mediator 패턴

Java 디자인 패턴의 프록시 모드(Proxy mode) 소개

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.