Maison > Java > javaDidacticiel > Introduction au modèle de chaîne de responsabilité dans les modèles de conception Java

Introduction au modèle de chaîne de responsabilité dans les modèles de conception Java

高洛峰
Libérer: 2017-03-18 11:55:31
original
1055 Les gens l'ont consulté

Pour ceux qui ont utilisé des macros, sachez que vous pouvez utiliser des macros pour lier plusieurs compétences à une seule touche. Par exemple, si la compétence classée en premier possède un CD, cette compétence sera ignorée et les compétences suivantes seront exécutées. Je me souviens quand je jouais à DK, lorsque je combattais des monstres, j'utilisais juste un bouton et je continuais d'appuyer dessus. Dans les méthodes doGet et doPost du servlet, nous envoyons généralement la requête doGet à doPost pour traitement. Il s'agit également d'un modèle de chaîne de responsabilité.

Ici, il y a une macro qui lie les deux compétences "Ice-Blooded Cold Vein" et "Ice Arrow". L'exemple de programme est le suivant :

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("施放--》冰血冷脉");
  }
 
}
Copier après la connexion


Classe de test :

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();
  }
 
}
Copier après la connexion

Résultat du test :

正在施放--》冰血冷脉
施放--》寒冰箭
Copier après la connexion

Résumé : Le modèle de chaîne de responsabilité est principalement utilisé pour une requête pouvant avoir plusieurs objets à traiter. situation.

Pour plus d'articles liés à l'introduction au modèle de chaîne de responsabilité des modèles de conception Java, veuillez faire attention au site Web PHP chinois !

Articles connexes :

Une introduction détaillée au code d'implémentation du modèle Mediator en Java

Modèle Mediator des modèles de conception Java

Introduction au mode proxy (Proxy mode) des modèles de conception Java

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal