マクロを使用したことのある友人は、マクロを使用すると複数のスキルを 1 つのキーにバインドできることを知っているはずです。たとえば、1 位のスキルに CD がある場合、そのスキルはスキップされ、後続のスキルが実行されます。昔DKをプレイしていた頃、モンスターと戦う時はボタンを1つだけ押し続けていたのを思い出します。サーブレットの doGet メソッドと doPost メソッドでは、通常、処理のために doGet リクエストを doPost に送信します。これも責任の連鎖モデルです。
ここでは「氷血の冷脈」と「氷の矢」の2つのスキルをバインドするマクロがあります。プログラム例は以下のとおりです。
パッケージの責任;/** * DOC スキル インターフェイス、バインドされるスキルはこのインターフェイスを実装する必要があります* */public インターフェイス ISkill { public void CastSkill();}パッケージの責任;import java.util.ArrayList;import java.util. /** * 複数のスキルを結合してワンクリック キャストを実現するために使用される DOC マクロ クラス* */public class Macro { /** * 結合された複数のスキルの DOC コレクション*/ public List<ISkill > skill = new ArrayList<ISkill>(); /** * * DOC はバインド順序でスキルをキャストします。 */ public void CastSkill() { for (int i = 0; i < skill.size(); i++) { skill.get( i).castSkill(); } } /** * DOC バインディング スキル * * @param skill */ public void bindingSkill(ISkill skill) { skill.add(skill); /** * DOC Ice Arrow スキル、冷却時間なし* */public class IceArrowimplements ISkill { @Override public void CastSkill() { System.out.println("Cast--"Ice Arrow"); }}パッケージ責任;/* * * DOC 氷血の冷脈スキル、冷却時間 2 分*/public class IceBloodFastimplements ISkill { @Override public void CastSkill() { //これは、スキルがクールダウンしているかどうかを判断するために使用できます。 System.out.println("Cast--"Ice-Blooded Cold Pulse") はここでは省略されています。
テストクラス:
パッケージの責任; public static void main(String[] args) { マクロマクロ = new Macro(); マクロ.bindSkill(new IceArrow()); ); }}
テスト結果:
詠唱中--「氷血のコールドパルス詠唱--」アイスアロー
概要:責任連鎖モデルは主に、リクエストに処理する複数のオブジェクトが含まれる可能性がある場合に使用されます。