国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java設計模式之責任鏈模式簡介

2019-11-26 15:28:04
字體:
來源:轉載
供稿:網友

對于使用過宏的朋友應該知道,利用宏可以實現一個鍵綁定多個技能。例如如果排在前面的技能有CD,則跳過此技能,執行之后的技能。記得曾經玩DK,打怪的時候,就是用一個鍵,一直按就行了。在servlet里的doGet和doPost方法,我們一般都把doGet請求發動到doPost里來處理,這也是一種責任鏈的模式。

這里,有個宏,綁定了“冰血冷脈”和“寒冰箭”兩個技能,程序實例如下所示:

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

測試結果:

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

總結:責任鏈模式主要用于,一個請求,可能有多個對象要對其處理的情況

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望奎县| 淅川县| 开化县| 奉新县| 沂源县| 彭泽县| 华亭县| 仪征市| 永年县| 绵阳市| 方城县| 静海县| 溧阳市| 兰溪市| 桐乡市| 出国| 彰化市| 丰县| 大方县| 黄梅县| 龙游县| 水城县| 永泰县| 册亨县| 博客| 赫章县| 隆德县| 新绛县| 三明市| 盱眙县| 慈利县| 盐边县| 泽普县| 榆社县| 海晏县| 布尔津县| 旌德县| 民乐县| 土默特左旗| 莫力| 孝义市|