欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java設(shè)計(jì)模式之責(zé)任鏈模式簡(jiǎn)介

 更新時(shí)間:2014年07月29日 15:39:49   投稿:shichen2014  
這篇文章主要介紹了Java設(shè)計(jì)模式之責(zé)任鏈模式,需要的朋友可以參考下

對(duì)于使用過(guò)宏的朋友應(yīng)該知道,利用宏可以實(shí)現(xiàn)一個(gè)鍵綁定多個(gè)技能。例如如果排在前面的技能有CD,則跳過(guò)此技能,執(zhí)行之后的技能。記得曾經(jīng)玩DK,打怪的時(shí)候,就是用一個(gè)鍵,一直按就行了。在servlet里的doGet和doPost方法,我們一般都把doGet請(qǐng)求發(fā)動(dòng)到doPost里來(lái)處理,這也是一種責(zé)任鏈的模式。

這里,有個(gè)宏,綁定了“冰血冷脈”和“寒冰箭”兩個(gè)技能,程序?qū)嵗缦滤荆?/p>

package responsibility;

/**
 * DOC 技能接口,要綁定的技能都要實(shí)現(xiàn)這個(gè)接口
 * 
 */
public interface ISkill {

  public void castSkill();

}

package responsibility;

import java.util.ArrayList;
import java.util.List;

/**
 * DOC 宏類,用來(lái)把多個(gè)技能綁在一起,實(shí)現(xiàn)一鍵施放
 * 
 */
public class Macro {

  /**
   * DOC 多個(gè)技能綁在一起的集合
   */
  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 寒冰箭技能,無(wú)冷卻時(shí)間
 * 
 */
public class IceArrow implements ISkill {

  @Override
  public void castSkill() {
    System.out.println("施放--》寒冰箭");
  }

}

package responsibility;

/**
 * DOC 冰血冷脈技能,冷卻時(shí)間2分鐘
 */
public class IceBloodFast implements ISkill {

  @Override
  public void castSkill() {
    // 這里可以用來(lái)判斷技能是否在冷卻當(dāng)中,這里略去了
    System.out.println("施放--》冰血冷脈");
  }

}

測(cè)試類:

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

}

測(cè)試結(jié)果:

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

總結(jié):責(zé)任鏈模式主要用于,一個(gè)請(qǐng)求,可能有多個(gè)對(duì)象要對(duì)其處理的情況

相關(guān)文章

最新評(píng)論