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

Java設(shè)計模式之java責(zé)任鏈模式詳解

 更新時間:2021年09月23日 09:14:43   作者:李阿昀  
這篇文章主要介紹了JAVA 責(zé)任鏈模式的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

在本講,我們來學(xué)習(xí)一下行為型模式里面的第四個設(shè)計模式,即責(zé)任鏈模式。

概述

在學(xué)習(xí)責(zé)任鏈模式之前,我們先來看一下下面這段描述。

在現(xiàn)實生活中,常常會出現(xiàn)這樣的事例:一個請求有多個對象可以處理,但每個對象的處理條件或權(quán)限不同。例如,公司員工請假,可批假的領(lǐng)導(dǎo)有部門負(fù)責(zé)人、副總經(jīng)理、總經(jīng)理等,但是每個領(lǐng)導(dǎo)能批準(zhǔn)的天數(shù)不同,員工必須根據(jù)自己要請假的天數(shù)去找不同的領(lǐng)導(dǎo)簽名,也就是說員工必須記住每個領(lǐng)導(dǎo)的姓名、電話和地址等信息,這增加了員工請假的難度。因為領(lǐng)導(dǎo)有很多,員工到底找哪位領(lǐng)導(dǎo)他還得自己判斷,所以這會顯得特別特別麻煩。這樣的例子還有很多,如找領(lǐng)導(dǎo)出差報銷、生活中的"擊鼓傳花"游戲等。

說了這么多,不知你有沒有在公司請過假,要是你請過假,想想是不是這么一回事啊!很顯然,在該例子中,請假就是一個請求,而且多個對象都可以處理該請求,有部門負(fù)責(zé)人、副總經(jīng)理、總經(jīng)理等,他們都可以進行批假,但是每個對象的處理條件或權(quán)限不同,比如部門負(fù)責(zé)人有可能只能批1~2天的假,一旦超過這一請假天數(shù),員工就得去找部門負(fù)責(zé)人的頂頭上司,也就是副總經(jīng)理了,要是還超過了副總經(jīng)理批假的一個范圍的話,那么員工就得再去找總經(jīng)理批假了,這是不是就增加了員工請假的難度啊!

既然問題出現(xiàn)了,那么又該如何去解決呢?使用責(zé)任鏈模式。那什么又是責(zé)任鏈模式呢?下面我們就來看一看它的概念。

又名職責(zé)鏈模式,為了避免請求發(fā)送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一個對象記住其下一個對象的引用而連成一條鏈;當(dāng)有請求發(fā)生時,可將請求沿著這條鏈傳遞,直到有對象處理它為止。

很多人看完,完全不知道啥意思,這里我就為大家稍微解釋解釋。就以員工請假案例來說,請求發(fā)送者指的就是員工,因為是員工(例如張三)要請假的;多個請求處理者指的是部門負(fù)責(zé)人、副總經(jīng)理、總經(jīng)理等這些人。這樣,張三請假的示意圖就是下面這樣了。

在這里插入圖片描述

從上圖中可以看到,張三要請假的話,那么他只需要去找自己部門的負(fù)責(zé)人就可以了,因為對于他來說,他肯定知道自己部門的負(fù)責(zé)人是誰。然后,部門負(fù)責(zé)人會根據(jù)張三請假的天數(shù)來決定是否批假,如果部門負(fù)責(zé)人能批假,那么自然就幫張三批了;可如果他不能批,那么他就會去找他的頂頭上司,即副總經(jīng)理,因為他們已經(jīng)連成一條鏈了。同理,副總經(jīng)理也是一樣,他也會根據(jù)他所能批準(zhǔn)的請假天數(shù)來判斷,如果在自己的批準(zhǔn)范圍之內(nèi),那么廢話不多說,直接批假;如果批不了的話,那么再去找對應(yīng)他的頂頭上司,即總經(jīng)理。于此一來,當(dāng)整個鏈走完,張三請假的流程就算是結(jié)束了。

理解了責(zé)任鏈模式的概念之后,接下來,我們再來看一下責(zé)任鏈模式的結(jié)構(gòu)。

結(jié)構(gòu)

責(zé)任鏈模式主要包含以下角色:

  • 抽象處理者(Handler)角色:定義一個處理請求的接口,包含抽象處理方法和一個后繼連接(即記住下一個對象的引用)。

注意了,對于該角色,我們既可以定義成接口,也可以定義成抽象類,一般來說,我們都會定義成抽象類。

  • 具體處理者(Concrete Handler)角色:實現(xiàn)抽象處理者的處理方法,判斷能否處理本次請求,若可以處理請求則處理,否則將該請求轉(zhuǎn)給它的后繼者。
  • 客戶類(Client)角色:創(chuàng)建處理鏈,并向鏈頭的具體處理者對象提交請求,它不關(guān)心處理細(xì)節(jié)和請求的傳遞過程。

也就是說,客戶類不需要去找對應(yīng)的對象進行處理,而只需將處理鏈創(chuàng)建好即可。就拿上述張三請假的示意圖來說,他只需要找他自己的部門負(fù)責(zé)人即可,至于請假流程要經(jīng)過哪幾步,他并不需要去關(guān)注。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • mybatis返回map結(jié)果集@MapKey使用的場景分析

    mybatis返回map結(jié)果集@MapKey使用的場景分析

    這篇文章主要介紹了mybatis返回map結(jié)果集@MapKey使用的場景分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • MyBatis實現(xiàn)SQL映射文件

    MyBatis實現(xiàn)SQL映射文件

    映射器是 MyBatis 中最復(fù)雜并且是最重要的組件,本文主要介紹了MyBatis實現(xiàn)SQL映射文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Maven安裝本地的jar包和創(chuàng)建帶模板的自定義項目的操作過程

    Maven安裝本地的jar包和創(chuàng)建帶模板的自定義項目的操作過程

    這篇文章主要介紹了Maven安裝本地的jar包和創(chuàng)建帶模板的自定義項目,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • idea中maven項目模塊變成灰色原因及解決方案

    idea中maven項目模塊變成灰色原因及解決方案

    這篇文章主要介紹了idea中maven項目模塊變成灰色原因及解決方案,文中通過圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • spring boot+spring cache實現(xiàn)兩級緩存(redis+caffeine)

    spring boot+spring cache實現(xiàn)兩級緩存(redis+caffeine)

    這篇文章主要介紹了spring boot+spring cache實現(xiàn)兩級緩存(redis+caffeine),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 老生常談java數(shù)組中的常見異常

    老生常談java數(shù)組中的常見異常

    數(shù)組是用來存儲一系列數(shù)據(jù),但它往往被認(rèn)為是一系列相同類型的變量,異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的,接下來讓我們詳細(xì)的了解吧
    2022-03-03
  • springboot2.x 接入阿里云市場短信發(fā)送的實現(xiàn)

    springboot2.x 接入阿里云市場短信發(fā)送的實現(xiàn)

    本文主要介紹了springboot2.x 接入阿里云市場短信發(fā)送的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Spring中@Configuration注解和@Component注解的區(qū)別詳解

    Spring中@Configuration注解和@Component注解的區(qū)別詳解

    這篇文章主要介紹了Spring中@Configuration注解和@Component注解的區(qū)別詳解,@Configuration 和 @Component 到底有何區(qū)別呢?我先通過如下一個案例,在不分析源碼的情況下,小伙伴們先來直觀感受一下這兩個之間的區(qū)別,需要的朋友可以參考下
    2023-09-09
  • Java解析XML文件開源庫DOM4J

    Java解析XML文件開源庫DOM4J

    dom4j是一個Java的XML API,是jdom的升級品,用來讀寫XML文件的。dom4j是一個十分優(yōu)秀的JavaXML API,具有性能優(yōu)異、功能強大和極其易使用的特點,它的性能超過sun公司官方的dom技術(shù),同時它也是一個開放源代碼的軟件
    2023-01-01
  • Java動態(tài)驗證碼單線設(shè)計的兩種方法

    Java動態(tài)驗證碼單線設(shè)計的兩種方法

    這篇文章主要介紹了Java動態(tài)驗證碼單線設(shè)計的兩種方法,需要的朋友可以參考下
    2018-07-07

最新評論