設計模式之 責任鏈模式

一、定義

當你想讓一個以上的對象有機會能夠處理某個請求的時候,就使用責任鏈模式。

二、分析

我們在實際開發過程中,往往會遇到在執行某些操作時需要進行很多條件的驗證。

比如說在用戶在訂購一個商品時,我們就需要進行用戶認證、庫存校驗、賬戶校驗等等操作,只有經過這些處理後才能正常執行操作。

如果我們在訂購的代碼里加上這些校驗,就會變成下面的這樣:

代碼變得越來越多, 也越來越混亂。

如果我們後續,需要添加更多的校驗或者取消某些校驗,這樣會導致代碼變得越來越多, 也越來越混亂。

當出現此類的邏輯,設計模式建議我們使用責任鏈模式。把處理邏輯連成一個鏈,鏈上的每個節點都可以跳轉到下一個節點上。當需要處理的對象經過每個節點時,節點只需處理自己的邏輯,處理完成後調用下一個節點,直到走完所有的節點。

處理者依次排列, 組成一條鏈。

三、模式類圖

責任鏈模式

四、優缺點

  1. 將請求者和接收者解耦;
  2. 簡化類結構,類不需要知道全部細節;
  3. 可以更改處理的順序,動態的添加和刪除校驗邏輯;
  4. 並不能保證請求被處理;
  5. 請求鏈過長會導致性能降低;
  6. 不易於觀察運行時特徵,有礙於除錯,我能可能找不到是哪一個類處理了它。

五、實例

在員工請假流程中,公司規定:

請假天數3天內,部門經理審批即可,

請假天數大於3天的需要再通過老闆審批後才能請假。

根據實例說明,我們可以定義部門經理的處理類和老闆處理類,當請假天數3天內,部門經理就進行審覈;

審覈完成後流向老闆處理類,老闆處理類判斷,發現天數在3天以內就繼續往下放行,大於3天就進行審覈。

源碼:gitee地址(點擊跳轉)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章