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

Java設(shè)計模式之責(zé)任鏈模式簡介

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

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

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

package responsibility;

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

  public void castSkill();

}

package responsibility;

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

/**
 * DOC 宏類,用來把多個技能綁在一起,實現(xiàn)一鍵施放
 * 
 */
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();
  }

}

測試結(jié)果:

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

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

相關(guān)文章

  • 一文帶你輕松掌握EasyExcel的使用技巧

    一文帶你輕松掌握EasyExcel的使用技巧

    EasyExcel是一個基于Java的、快速、簡潔、解決大文件內(nèi)存溢出的Excel處理工具,這篇文章就來帶大家深入了解EasyExcel的使用技巧,需要的可以參考一下
    2023-06-06
  • 詳解Spring Boot 配置多個RabbitMQ

    詳解Spring Boot 配置多個RabbitMQ

    本篇文章主要介紹了Spring Boot 配置多個RabbitMQ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • SpringBoot基礎(chǔ)框架詳解

    SpringBoot基礎(chǔ)框架詳解

    SpringBoot開發(fā)目的是為了簡化Spring應(yīng)用的創(chuàng)建、運行、調(diào)試和部署等,使用Spring Boot可以不用或者只需要很少的Spring配置就可以讓企業(yè)項目快速運行起來,本文介紹SpringBoot基礎(chǔ)框架詳解,感興趣的朋友一起看看吧
    2025-05-05
  • Java并發(fā)編程中的CyclicBarrier線程屏障詳解

    Java并發(fā)編程中的CyclicBarrier線程屏障詳解

    這篇文章主要介紹了Java并發(fā)編程中的CyclicBarrier線程屏障詳解,
    2023-12-12
  • 關(guān)于spring 掃描不到j(luò)ar中class文件的原因分析及解決

    關(guān)于spring 掃描不到j(luò)ar中class文件的原因分析及解決

    這篇文章主要介紹了關(guān)于spring 掃描不到j(luò)ar中class文件的原因分析及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring @Value如何通過${}、#{}注入不同類型的值

    Spring @Value如何通過${}、#{}注入不同類型的值

    這篇文章主要介紹了Spring @Value如何通過${}、#{}注入不同類型的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringBoot集成Knife4j報錯:文件上傳不顯示文件域問題的解決方案

    SpringBoot集成Knife4j報錯:文件上傳不顯示文件域問題的解決方案

    在使用 Knife4j 為 Spring Boot 項目生成 API 文檔時,開發(fā)者可能會遇到文件上傳功能不顯示文件域的問題,本文將詳細介紹如何解決這一問題,并提供完整的解決方案,需要的朋友可以參考下
    2025-05-05
  • SpringJPA?做分頁條件查詢的代碼實踐

    SpringJPA?做分頁條件查詢的代碼實踐

    相信小伙伴們的項目很多都用到SpringJPA框架的吧,對于單表的增刪改查利用jpa是很方便的,但是對于條件查詢并且分頁?是不是很多小伙伴不經(jīng)常寫到,今天給大家分享SpringJPA?做分頁條件查詢的案例代碼,感興趣的朋友一起看看吧
    2024-03-03
  • SpringBoot中使用Redis?Stream實現(xiàn)消息監(jiān)聽示例

    SpringBoot中使用Redis?Stream實現(xiàn)消息監(jiān)聽示例

    本文主要介紹了SpringBoot中使用Redis?Stream實現(xiàn)消息監(jiān)聽示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • SpringBoot全局處理統(tǒng)一返回類型方式

    SpringBoot全局處理統(tǒng)一返回類型方式

    這篇文章主要介紹了SpringBoot全局處理統(tǒng)一返回類型方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論