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