日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

23种设计模式之责任链模式

發布時間:2024/8/23 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 23种设计模式之责任链模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

責任鏈模式的定義

定義: 使多個對象都有機會處理請求, 從而避免了請求的發送者和接受者之間的耦合關系. 將這些對象連成一條鏈, 并沿著這條鏈傳遞該請求,直到有對象處理它為止

通俗的講, 就是將對請求的處理組成一條鏈, 當請求來時, 在鏈中依次傳遞, 知道找到能夠處理此請求的對象

其通用類圖如下:

?

責任鏈模式的重點是 在"鏈"上, "鏈"由多個處理者 ConcreteHandler 組成的

Handler 抽象類代碼如下:

?

抽象的處理者實現三個職責:

  • 定義一個請求的處理方法 handleMessage ,唯一對外開放的方法
  • 定義一個鏈的編排方法 setNext, 設置下一個處理者
  • 定義具體的處理者必須實現的兩個方法, getHandlerLevel和echo
  • 具體處理類實現抽象類的方法即可

    其中涉及到的三個類:

  • Level: 負責定義請求和處理級別
  • Request: 負責封裝請求
  • Response: 負責封裝鏈中返回的結果
  • 場景類代碼如下:

    ?

    在實際應用中, 一般會有一個封裝類對責任鏈進行封裝, 直接返回鏈中的第一個處理者, 具體鏈的設置不需要高層模塊關心, 這樣, 更簡化了高層模塊的調用, 減少模塊間的耦合, 提高系統的靈活性

    責任鏈模式的應用

    1.責任鏈模式的優點

    責任鏈模式非常顯著的優點就是將請求和處理分開.請求者可以不用知道是誰處理的, 處理者可以不用知道請求的全貌, 兩者解耦, 提高系統的靈活性

    2.責任鏈模式的缺點

  • 性能問題, 每個請求都是從鏈頭遍歷到鏈尾, 特別在鏈比較長的時候, 性能是一個非常 大的問題
  • 調試不很方便, 特別是鏈條比較長,環節比較多的時候, 由于采用了類似遞歸的方式, 調試的時候邏輯可能比較復雜
  • 3.責任鏈模式的注意事項

    鏈中節點數量需要控制,避免出現超長鏈的情況, 一般的做法是在Handler中設置一個最大節點數量, 在setNext方法中判斷是否已經超出其閾值, 超過則不允許該鏈建立, 避免無意識的破壞系統性能


    在上面的例子中, 融合了模板方法模式, 通過融合模板方法模式, 各個實現類只要關注自己的業務邏輯就成了, 至于什么事要自己處理, 就讓父類去決定好了, 也就是說父類實現了請求傳遞的功能, 子類實現請求的處理, 符合單一職責原則, 這樣, 子類的實現非常簡單, 責任鏈的建立也非常靈活.

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的23种设计模式之责任链模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。