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

Java設(shè)計(jì)模式編程中的責(zé)任鏈模式使用示例

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

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

Java實(shí)例
類圖:

20165794216522.jpg (686×324)

/** 
 * 抽象責(zé)任 
 */ 
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(); 
} 

/** 
 * 具體責(zé)任 
 */ 
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");//權(quán)限過濾 
    IFilter filter2 = new ConcreteFilter("suffix-filter");//后綴名過濾 
    IFilter filter3 = new ConcreteFilter("style-filter");//風(fēng)格過濾 
    filter1.setSuccessor(filter2); 
    filter2.setSuccessor(filter3); 
    System.out.println("------以下是每一個(gè)處理者(包括后繼者)都處理了, 順序也是一級一級的傳遞------"); 
    filter1.handleFilter(); 
     
    System.out.println("------以下是交由最后一個(gè)后繼者處理------"); 
    filter1.handleFilter2(); 
     
  } 
} 


打?。?/p>

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

相關(guān)文章

  • Java簡單實(shí)現(xiàn)SpringMVC+MyBatis分頁插件

    Java簡單實(shí)現(xiàn)SpringMVC+MyBatis分頁插件

    自己最近搭建的一個(gè)SpringMVC+Mybatis的框架 屬于無實(shí)體類的框架 并實(shí)現(xiàn)了Myabtis的自動分頁和總數(shù)查詢 只要傳入分頁參數(shù)便能自動查詢總數(shù)和分頁 總數(shù)封裝在參數(shù)里面執(zhí)行查詢后可以直接從參數(shù)中獲取
    2015-09-09
  • Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型

    Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型

    這篇文章主要介紹了Kotlin基礎(chǔ)教程之?dāng)?shù)據(jù)類型的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java中Dijkstra算法求解最短路徑的實(shí)現(xiàn)

    Java中Dijkstra算法求解最短路徑的實(shí)現(xiàn)

    Dijkstra算法是一種解決最短路徑問題的常用算法,本文主要介紹了Java中Dijkstra算法求解最短路徑的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Spring Boot整合MyBatis連接Oracle數(shù)據(jù)庫的步驟全紀(jì)錄

    Spring Boot整合MyBatis連接Oracle數(shù)據(jù)庫的步驟全紀(jì)錄

    這篇文章主要給大家介紹了關(guān)于Spring Boot整合MyBatis連接Oracle數(shù)據(jù)庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • JAVA8獨(dú)有的map遍歷方式(非常好用)

    JAVA8獨(dú)有的map遍歷方式(非常好用)

    這篇文章主要介紹了JAVA8獨(dú)有的map遍歷方式(非常好用),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 超細(xì)致講解Spring框架 JdbcTemplate的使用

    超細(xì)致講解Spring框架 JdbcTemplate的使用

    在之前的Javaweb學(xué)習(xí)中,學(xué)習(xí)了手動封裝JdbcTemplate,其好處是通過(sql語句+參數(shù))模板化了編程。而真正的JdbcTemplate類,是Spring框架為我們寫好的。它是 Spring 框架中提供的一個(gè)對象,是對原始 Jdbc API 對象的簡單封裝。
    2021-09-09
  • ZooKeeper命令及JavaAPI操作代碼

    ZooKeeper命令及JavaAPI操作代碼

    ZooKeeper是一個(gè)樹形目錄服務(wù),其數(shù)據(jù)模型和Uiix的文件目錄樹很類似,擁有一個(gè)層次化結(jié)構(gòu),這篇文章主要介紹了ZooKeeper命令及JavaAPI操作代碼,需要的朋友可以參考下
    2023-03-03
  • 關(guān)于jdk環(huán)境變量的配置方式解讀

    關(guān)于jdk環(huán)境變量的配置方式解讀

    這篇文章主要介紹了關(guān)于jdk環(huán)境變量的配置方式解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • JavaSwing后臺播放音樂mp3

    JavaSwing后臺播放音樂mp3

    這篇文章主要為大家詳細(xì)介紹了JavaSwing后臺播放音樂mp3,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Flink自定義Sink端實(shí)現(xiàn)過程講解

    Flink自定義Sink端實(shí)現(xiàn)過程講解

    這篇文章主要介紹了Flink自定義Sink端實(shí)現(xiàn)過程,在Fink官網(wǎng)中sink端只是給出了常規(guī)的write api.在我們實(shí)際開發(fā)場景中需要將flink處理的數(shù)據(jù)寫入kafka,hbase kudu等外部系統(tǒng)
    2023-01-01

最新評論