色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

設計模式之責任鏈模式概述

jf_xutpKvFS ? 來源:老漢聊技術 ? 2023-09-27 09:54 ? 次閱讀

概述

設計模式是一些被反復使用的、具有普遍性的設計解決方案,它們是在特定情境下對軟件設計問題的成功解決方式的總結和歸納。常見的設計模式可以分為以下三類:

創建型模式:這些模式用于處理對象的創建過程,包括工廠模式、抽象工廠模式、單例模式、建造者模式和原型模式。

結構型模式:這些模式用于處理對象之間的組合,包括適配器模式、橋接模式、組合模式、裝飾模式、外觀模式、享元模式和代理模式。

行為型模式:這些模式用于處理對象之間的交互,包括責任鏈模式、命令模式、解釋器模式、迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態模式、策略模式、模板方法模式和訪問者模式。

這些設計模式提供了在軟件設計中常用的一些解決方案,幫助開發人員更加高效地進行設計和開發。同時,這些模式還提高了代碼的可維護性和可擴展性。

責任鏈模式

責任鏈模式(Chain of Responsibility Pattern)是一種行為型設計模式,它可以將請求的發送者和接收者解耦,并且使得多個對象都有機會處理請求,從而避免了請求的發送者和接收者之間的耦合關系。責任鏈模式通常被用來處理復雜的請求處理流程,例如在一個大型系統中,一個請求可能需要經過多個處理器才能最終被處理。

一、應用場景

責任鏈模式通常適用于以下情況:

當有多個對象可以處理一個請求,并且它們需要按照一定的順序處理請求時,可以使用責任鏈模式。

當需要動態地添加或刪除請求處理對象時,可以使用責任鏈模式。

當需要將請求處理對象從主體中分離出來時,可以使用責任鏈模式。

典型應用場景如下:

Web 應用程序中的過濾器:Web 應用程序中經常使用過濾器,來對請求進行預處理或后處理。使用責任鏈模式可以動態地將過濾器添加到鏈中,從而實現對請求的預處理或后處理。

日志記錄:日志記錄是一種典型的責任鏈模式。在日志記錄中,日志記錄器通常會根據日志級別將日志分成不同的等級,并將日志發送到相應的處理器進行處理。

異常處理:在程序中,可能會發生各種異常情況,如空指針異常、數組越界異常等。使用責任鏈模式可以將不同類型的異常處理器組成一個鏈,從而依次處理異常,并在鏈的末尾將異常記錄到日志中。

消息處理:在消息隊列中,可能會有多個消息處理器,用于處理不同類型的消息。使用責任鏈模式可以將這些消息處理器組成一個鏈,從而依次處理消息,并將消息傳遞給下一個處理器。

二、實現方式

責任鏈模式通常由以下角色組成:

抽象處理器(Handler):定義了一個處理請求的接口,并且保持了一個對下一個處理器的引用。

具體處理器(ConcreteHandler):實現了抽象處理器的接口,處理請求的同時,也能夠決定是否將請求轉發給下一個處理器。

客戶端(Client):創建責任鏈,并將請求發送給第一個處理器。

三、代碼示例

下面是一個使用責任鏈模式的示例,假設有一個業務流程,需要依次經過三個處理器才能完成。如果某個處理器無法處理請求,它將請求轉發給下一個處理器,直到請求被處理完成。

wKgZomUTi82ACqPNAAEZAomBLos665.jpg
wKgaomUTi9uAT6L-AADxaw1qOYI296.jpg

上述示例中,Handler 是抽象處理器,定義了處理請求的接口,并保持了一個對下一個處理器的引用。ConcreteHandler1、ConcreteHandler2 和 ConcreteHandler3 是具體處理器,實現了抽象處理器的接口,并能夠處理請求,并決定是否將請求轉發給下一個處理器。Client是客戶端,創建了責任鏈,并將請求發送給第一個處理器。

運行該示例,將會輸出如下內容:

ConcreteHandler1 is handling the request.ConcreteHandler2 is handling the request.ConcreteHandler3 is handling the request.No handler is available.

四、優缺點

優點:

可以將請求的發送者和接收者解耦,并且使得多個對象都有機會處理請求,從而避免了請求的發送者和接收者之間的耦合關系。

可以動態地添加或刪除請求處理對象,從而增加或減少請求處理的靈活性。

可以將請求處理對象從主體中分離出來,從而簡化了主體的代碼。

缺點:

如果責任鏈太長,可能會導致請求的處理時間過長,從而影響系統性能。

如果責任鏈的配置不當,可能會導致請求不能被正確處理。

五、總結

責任鏈模式是一種行為型設計模式,它可以將請求的發送者和接收者解耦,并且使得多個對象都有機會處理請求。責任鏈模式適用于多個對象可以處理一個請求,并且需要按照一定的順序處理請求的情況。使用責任鏈模式可以動態地添加或刪除請求處理對象,從而增加或減少請求處理的靈活性,但如果責任鏈太長,可能會導致請求的處理時間過長,從而影響系統性能。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19348

    瀏覽量

    230269
  • 接收機
    +關注

    關注

    8

    文章

    1182

    瀏覽量

    53531
  • 過濾器
    +關注

    關注

    1

    文章

    430

    瀏覽量

    19652
  • 迭代器
    +關注

    關注

    0

    文章

    43

    瀏覽量

    4329

原文標題:設計模式之責任鏈模式

文章出處:【微信號:LabVIEW QT 修煉之路,微信公眾號:LabVIEW QT 修煉之路】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CKS32F4xx系列MCU的低功耗模式睡眠模式

    本課講為大家講解CKS32F4xx系列產品的低功耗模式睡眠(Sleep)模式。MCU為滿足某些應用場景:如小型化低容量設備,長期監測設備等,低功耗應運而生,其中根據需求,用戶可以選擇睡眠模式
    發表于 06-26 10:02 ?660次閱讀
    CKS32F4xx系列MCU的低功耗<b class='flag-5'>模式</b><b class='flag-5'>之</b>睡眠<b class='flag-5'>模式</b>

    電機控制常用算法概述(3)

    和驅動順序是不變的。未完待續!!本文相關文章1? 電機控制常用算法概述(1)2?電機控制常用算法概述(2)
    發表于 10-29 16:45

    什么是設計模式?為什么要學習設計模式

    物是人非事事休,當周圍的一切都發生著改變,包括我們的需求、程序等,我們又該如何去應對和解決呢?歡迎進入編程人員必經之路------設計模式1 本篇概述什么是設計模式為什么要學習設計模式
    發表于 01-19 06:41

    什么是菊花模式 星型模式

    什么是菊花模式 星型模式 菊花模式   菊花
    發表于 12-05 09:00 ?8545次閱讀

    Modbus ASCII 模式通訊程序

    C語言編寫的臺達變頻器Modbus ASCII 模式通訊程序
    發表于 12-02 10:25 ?6次下載

    概述STM32中GPIO的8種工作模式

    概述STM32中GPIO的8種工作模式
    發表于 07-06 17:35 ?26次下載
    <b class='flag-5'>概述</b>STM32中GPIO的8種工作<b class='flag-5'>模式</b>

    C語言設計模式的程序資料合集

    模板模式,C語言設計模式工廠模式,C語言設計模式
    發表于 11-16 08:00 ?5次下載

    嵌入式軟件設計設計模式

    文章目錄前言1.設計模式適配器模式2.設計模式單例模式3.設計
    發表于 10-21 11:07 ?9次下載
    嵌入式軟件設計<b class='flag-5'>之</b>設計<b class='flag-5'>模式</b>

    STM32低功耗模式待機模式

    上周完成了一個小項目,項目涉及到stm32的低功耗的待機模式,特在此記錄下32的待機模式。 芯片:STM32f030F4 庫:HAL庫 喚醒方式:用RTC和PA0的上升沿喚醒先來看下低功耗模式
    發表于 12-07 16:21 ?8次下載
    STM32低功耗<b class='flag-5'>模式</b><b class='flag-5'>之</b>待機<b class='flag-5'>模式</b>

    一起看看責任設計模式吧!

    如何解決這個問題,我們可以通過鏈表將每一關連接起來,形成責任的方式,第一關通過后是第二關,第二關通過后是第三關 ....,這樣客戶端就不需要進行多重 if 的判斷了
    的頭像 發表于 07-08 16:25 ?877次閱讀

    什么是責任

    責任模式是行為模式的一種,它將需要觸發的Handler組成一條,發送者將請求發給的第一個接
    的頭像 發表于 02-16 14:41 ?970次閱讀

    如何用責任默認優雅地進行參數校驗

    那么有什么更好的參數校驗的方式呢?本文就推薦一種通過責任設計模式來優雅地實現參數的校驗功能,我們通過一個用戶注冊的例子來講明白如何實現。
    的頭像 發表于 04-06 15:00 ?468次閱讀

    責任設計模式詳解

    責任模式是一種行為設計模式, 允許你將請求沿著處理者進行發送。收到請求后, 每個處理者均可對請求進行處理, 或將其傳遞給
    的頭像 發表于 05-22 15:12 ?446次閱讀
    <b class='flag-5'>責任</b><b class='flag-5'>鏈</b>設計<b class='flag-5'>模式</b>詳解

    內部補償高級電流模式(ACM)概述

    電子發燒友網站提供《內部補償高級電流模式(ACM)概述.pdf》資料免費下載
    發表于 08-26 14:55 ?1次下載
    內部補償高級電流<b class='flag-5'>模式</b>(ACM)<b class='flag-5'>概述</b>

    還在自己實現責任?我建議你造輪子之前先看看這個開源項目

    1. 前言 設計模式在軟件開發中被廣泛使用。通過使用設計模式,開發人員可以更加高效地開發出高質量的軟件系統,提高代碼的可讀性、可維護性和可擴展性。 責任
    的頭像 發表于 09-20 14:38 ?376次閱讀
    還在自己實現<b class='flag-5'>責任</b><b class='flag-5'>鏈</b>?我建議你造輪子之前先看看這個開源項目
    主站蜘蛛池模板: 国产人妻麻豆蜜桃色在线| cntv官网| 99久久网站| 久久re热在线视频精99| 少男同志freedeos| 北条麻妃夫の友人196| 久久精品国产久精国产果冻传媒| 亚洲国产AV精品卡一卡二| 国产精品高清免费网站| 四虎永久在线精品国产| 国产成人精品免费视频大全办公室| 日本成熟bbxxxxxxxx| YELLOW视频在线观看免费版高清| 男人天堂黄色| 爱爱好爽好大好紧视频| 日本无码人妻精品一区二区视频| xxnx日本| 涩涩爱涩涩片影院| 国产精品久久人妻拍拍水牛影视 | 大桥未久电影在线观看| 日日干夜夜爱| 国产精品久久久久永久免费看| 忘忧草在线社区WWW日本直播| 国产高潮久久精品AV无码 | 日韩精品AV一区二区三区| 成人综合在线观看| 四房播播开心色播| 国际老妇高清在线观看| 一本之道高清在线3线观看| 啦啦啦 中文 日本 韩国 免费| 91麻豆精品国产一级| 欧美无码专区| 国产精品国产三级国产AV麻豆 | 精品含羞草免费视频观看| 野花日本完整版在线观看免费高清| 久久精品免费看网站| 99re这里只有精品视频| 日本孕妇大胆孕交| 国产永不无码精品AV永久| 亚洲午夜精品一区二区公牛电影院| 啦啦啦WWW在线观看免费高清版|