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

Java設計模式之java責任鏈模式詳解

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

在本講,我們來學習一下行為型模式里面的第四個設計模式,即責任鏈模式。

概述

在學習責任鏈模式之前,我們先來看一下下面這段描述。

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

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

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

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

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

在這里插入圖片描述

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

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

結(jié)構(gòu)

責任鏈模式主要包含以下角色:

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Java  HttpURLConnection超時和IO異常處理

    Java HttpURLConnection超時和IO異常處理

    這篇文章主要介紹了Java HttpURLConnection超時和IO異常處理的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • 淺談Java 中的單元測試

    淺談Java 中的單元測試

    這篇文章主要介紹了Java 中的單元測試的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-09-09
  • 淺析java中String類型中“==”與“equal”的區(qū)別

    淺析java中String類型中“==”與“equal”的區(qū)別

    這篇文章主要介紹了淺析java中String類型中“==”與“equal”的區(qū)別,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • javaweb 項目初始配置的方法步驟

    javaweb 項目初始配置的方法步驟

    本文主要介紹了javaweb 項目初始配置的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳解SpringMVC學習系列之國際化

    詳解SpringMVC學習系列之國際化

    這篇文章主要介紹了詳解SpringMVC學習系列之國際化,詳細的介紹了關(guān)于瀏覽器,Session,Cookie,URL請求的國際化的實現(xiàn),有興趣的可以了解一下
    2017-07-07
  • java模擬發(fā)送form-data的請求方式

    java模擬發(fā)送form-data的請求方式

    這篇文章主要介紹了java模擬發(fā)送form-data的請求方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • mybatis foreach標簽的使用詳解

    mybatis foreach標簽的使用詳解

    這篇文章主要介紹了mybatis foreach標簽的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Java實現(xiàn)窗體程序顯示日歷

    Java實現(xiàn)窗體程序顯示日歷

    這篇文章主要為大家詳細介紹了Java實現(xiàn)窗體程序顯示日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • java中斷線程的正確姿勢完整示例

    java中斷線程的正確姿勢完整示例

    這篇文章主要為大家介紹了java中斷線程的正確姿勢完整示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • SpringMVC五大組件與執(zhí)行原理分析總結(jié)

    SpringMVC五大組件與執(zhí)行原理分析總結(jié)

    這篇文章主要介紹了SpringMVC五大組件與執(zhí)行原理分析總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01

最新評論

晴隆县| 江北区| 藁城市| 芷江| 武定县| 五华县| 永德县| 金平| 徐汇区| 内乡县| 龙游县| 繁峙县| 车致| 临西县| 藁城市| 吉首市| 丰顺县| 沁源县| 峨眉山市| 隆林| 武冈市| 鸡泽县| 襄樊市| 伊宁市| 灵璧县| 绵阳市| 桦南县| 县级市| 缙云县| 甘洛县| 合阳县| 扶余县| 泽普县| 安平县| 进贤县| 博白县| 德钦县| 琼结县| 奇台县| 民丰县| 莎车县|