JAva設計モードの6-責任チェーンモード


マクロを書いたことがあるかどうかはわかりませんが、1つのキーで複数のスキルをバインドします.前に並んでいるスキルにCDがある場合は、このスキルをスキップして、後のスキルを実行します.DKを游んでいたのを覚えています.変な时は、ボタンを1つ使って、ずっと押せばいいです.servletのdoGetとdoPostメソッドでは、doGetリクエストをdoPostに発動して処理します.これも責任チェーンのモードです.
ここには、氷血冷脈と寒氷矢を縛ったマクロがあり、2つのスキルがあります.
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();
    }

}

テスト結果:
氷血冷脈施放--』寒氷矢
まとめ:責任チェーンモデルは主に、1つのリクエスト、複数のオブジェクトが処理される場合に使用されます.