最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設計模式編程中的責任鏈模式使用示例

 更新時間:2016年05月07日 09:47:56   作者:匆忙擁擠repeat  
這篇文章主要介紹了Java設計模式編程中的責任鏈模式使用示例,責任鏈模式可以避免很多請求的發(fā)送者和接收者之間的耦合關系,需要的朋友可以參考下

責任鏈模式:多個對象由其對象對應下家的引用連成一條鏈,請求在這個鏈上傳遞,直到 鏈上的某一個接收對象處理此請求。因為請求的客戶端并不知道鏈上最終是誰來處理這個請求,使得系統(tǒng)可以在不影響客戶端的情況下動態(tài)地重新組織和分配責任, 從而避免了請求發(fā)送者與請求處理者之間的耦合。
責任鏈械中涉及到三種角色:
1,抽象處理者角色
2,具體處理者角色
3,請求發(fā)送者
小例子:假設去買房子,買房子就需要砍價, 賣房的人職位不同,可以優(yōu)惠的價格也不同,不同職位就可以形成一個處理請求的鏈。我們暫定: * 基層銷售員,只能優(yōu)惠3% * 銷售經理:可以優(yōu)惠5% * 銷售總監(jiān):可以優(yōu)惠8% * 老板(Boss):優(yōu)惠10%

Java實例
類圖:

20165794216522.jpg (686×324)

/** 
 * 抽象責任 
 */ 
public abstract class IFilter { 
  private IFilter successor; 
 
  public IFilter getSuccessor() { 
    return successor; 
  } 
 
  public void setSuccessor(IFilter successor) { 
    this.successor = successor; 
  } 
   
  public abstract void handleFilter(); 
   
  public abstract void handleFilter2(); 
} 

/** 
 * 具體責任 
 */ 
public class ConcreteFilter extends IFilter { 
   
  private String name; 
  public ConcreteFilter(String name) { 
    this.name = name; 
  } 
   
  @Override 
  public void handleFilter() { 
    /* 
     * 自己先處理,如有后繼者,再由它處理一次 
     */ 
    System.out.println(name + " 處理了請求"); 
    if (getSuccessor() != null) { 
      getSuccessor().handleFilter(); 
    } 
  } 
   
  @Override 
  public void handleFilter2() { 
    /* 
     * 有后繼者就后繼者處理, 否則自己處理 
     */ 
    if (getSuccessor() != null) { 
      getSuccessor().handleFilter2(); 
    } else { 
      System.out.println(name + " 處理了請求"); 
    } 
  } 
} 

public class Test { 
  public static void main(String[] args) { 
    IFilter filter1 = new ConcreteFilter("permission-filter");//權限過濾 
    IFilter filter2 = new ConcreteFilter("suffix-filter");//后綴名過濾 
    IFilter filter3 = new ConcreteFilter("style-filter");//風格過濾 
    filter1.setSuccessor(filter2); 
    filter2.setSuccessor(filter3); 
    System.out.println("------以下是每一個處理者(包括后繼者)都處理了, 順序也是一級一級的傳遞------"); 
    filter1.handleFilter(); 
     
    System.out.println("------以下是交由最后一個后繼者處理------"); 
    filter1.handleFilter2(); 
     
  } 
} 


打印:

------以下是每一個處理者(包括后繼者)都處理了, 順序也是一級一級的傳遞------ 
permission-filter 處理了請求 
suffix-filter 處理了請求 
style-filter 處理了請求 
------以下是交由最后一個后繼者處理------ 
style-filter 處理了請求 

相關文章

  • Spring Boot調用 Shell 腳本實現(xiàn)看門狗功能

    Spring Boot調用 Shell 腳本實現(xiàn)看門狗功能

    這篇文章主要介紹了Spring Boot調用 Shell 腳本實現(xiàn)看門狗功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot接口或方法進行失敗重試的實現(xiàn)方式

    SpringBoot接口或方法進行失敗重試的實現(xiàn)方式

    為了防止網絡抖動,影響我們核心接口或方法的成功率,通常我們會對核心方法進行失敗重試,如果我們自己通過for循環(huán)實現(xiàn),會使代碼顯得比較臃腫,所以本文給大家介紹了SpringBoot接口或方法進行失敗重試的實現(xiàn)方式,需要的朋友可以參考下
    2024-07-07
  • Spring Boot 整合 Mockito提升Java單元測試的高效實踐案例

    Spring Boot 整合 Mockito提升Java單元測試的高效實踐案例

    Mockito與Spring Boot的整合為Java開發(fā)者提供了一套完整的解決方案,使得單元測試更為精準、高效,從而確保了代碼質量、降低了維護成本,并促進了項目的持續(xù)集成與交付,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • springboot如何獲取接口下所有實現(xiàn)類

    springboot如何獲取接口下所有實現(xiàn)類

    這篇文章主要介紹了springboot如何獲取接口下所有實現(xiàn)類問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • java連接Access數據庫的方法

    java連接Access數據庫的方法

    這篇文章主要為大家詳細介紹了java連接Access數據庫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Mybatis如何解決sql中l(wèi)ike通配符模糊匹配問題

    Mybatis如何解決sql中l(wèi)ike通配符模糊匹配問題

    這篇文章主要介紹了Mybatis如何解決sql中l(wèi)ike通配符模糊匹配問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring中Bean的創(chuàng)建流程詳細解讀

    Spring中Bean的創(chuàng)建流程詳細解讀

    這篇文章主要介紹了Spring中Bean的創(chuàng)建流程詳細解讀,Spring 中創(chuàng)建 Bean ,是通過調用 GetBean 方法來觸發(fā)的,所以,我們會從這個方法開始,需要的朋友可以參考下
    2023-10-10
  • Mybatis plus中使用in查詢出錯如何解決

    Mybatis plus中使用in查詢出錯如何解決

    這篇文章主要介紹了Mybatis plus中使用in查詢出錯的問題及解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • idea?maven?經常主目錄自動變回默認的解決方法

    idea?maven?經常主目錄自動變回默認的解決方法

    很多朋友反映idea?maven?經常主目錄自動變回默認,遇到這樣的問題真的很頭疼,該如何解決呢?下面小編給大家介紹下idea?maven目錄變回默認的解決方法,需要的朋友可以參考下
    2022-08-08
  • Java中構造、生成XML簡明教程

    Java中構造、生成XML簡明教程

    這篇文章主要介紹了Java中構造、生成XML簡明教程,本文通過dom4j包來完成,需要的朋友可以參考下
    2014-08-08

最新評論

临城县| 锡林郭勒盟| 甘南县| 八宿县| 新邵县| 张家港市| 张家口市| 巢湖市| 河南省| 通州区| 东源县| 江安县| 西乌珠穆沁旗| 神木县| 安义县| 金堂县| 泸州市| 韶关市| 罗田县| 隆回县| 大余县| 长岛县| 固镇县| 临清市| 海门市| 麻江县| 清涧县| 溆浦县| 大田县| 余江县| 曲靖市| 忻城县| 陆河县| 台北县| 黄石市| 外汇| 荆州市| 越西县| 双城市| 桂东县| 高清|