Heim  >  Artikel  >  Java  >  Einführung in das Chain of Responsibility-Muster in Java-Entwurfsmustern

Einführung in das Chain of Responsibility-Muster in Java-Entwurfsmustern

高洛峰
高洛峰Original
2017-03-18 11:55:31996Durchsuche

Für diejenigen, die Makros verwendet haben, sollten Sie wissen, dass Sie Makros verwenden können, um mehrere Fähigkeiten an eine Taste zu binden. Wenn beispielsweise die an erster Stelle stehende Fertigkeit eine CD hat, wird diese Fertigkeit übersprungen und die nachfolgenden Fertigkeiten werden ausgeführt. Ich erinnere mich, als ich DK spielte und gegen Monster kämpfte, benutzte ich einfach einen Knopf und drückte ihn einfach weiter. In den Methoden doGet und doPost im Servlet senden wir normalerweise die doGet-Anfrage zur Verarbeitung an doPost. Dies ist auch ein Chain-of-Responsibility-Modell.

Hier gibt es ein Makro, das die beiden Fähigkeiten „Ice-Blooded Cold Vein“ und „Ice Arrow“ verbindet. Das Programmbeispiel lautet wie folgt:

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("施放--》冰血冷脉");
  }
 
}


Testklasse:

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();
  }
 
}

Testergebnis:

正在施放--》冰血冷脉
施放--》寒冰箭

Zusammenfassung: Das Chain-of-Responsibility-Modell wird hauptsächlich für eine Anfrage verwendet, bei der möglicherweise mehrere Objekte verarbeitet werden müssen. Situation.

Weitere Artikel zur Einführung in das Chain of Responsibility-Modell von Java Design Patterns finden Sie auf der chinesischen PHP-Website!

Verwandte Artikel:

Eine detaillierte Einführung in den Code zur Implementierung des Mediator-Musters in Java

Mediator-Muster von Java-Entwurfsmustern

Einführung in den Proxy-Modus (Proxy-Modus) von Java-Entwurfsmustern

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn