設計模式入門:責任鏈模式 Chain of Responsibility Pattern

更新於 2024/09/11閱讀時間約 2 分鐘

想像一下你在公司遇到一個棘手的問題。你會怎麼做?通常的做法是先跟你的主管報告,發現他解決不了,就再往上報告給更高層的主管,如果還是解決不了就再往上報告給更高層,這樣層層往上,直到有人可以處理為止。這就是「責任鏈模式」的概念,將任務一步步傳遞,直到問題被解決。


什麼是責任鏈模式?

責任鏈模式是一種行為型設計模式,它允許多個物件依序處理同一個請求。如果第一個物件處理不了,它就會把請求交給下一個,直到某個物件能處理它為止。這種方式讓系統更加靈活,不需要在一開始就知道該誰處理哪個請求。


舉個例子,假設你在玩一個線上遊戲,遇到問題需要幫助,首先你可能會問遊戲內的自動客服系統。如果它解決不了你的問題,會自動轉給人工客服,若問題太複雜,人工客服還能把問題上報給技術支援團隊。這就是典型的責任鏈模式的應用場景。


責任鏈模式的應用場景

在很多公司或客服系統裡都能看到責任鏈模式的應用。當客戶發送問題,問題可能會由不同層級的支援人員來處理:從自動回覆機器人到人工客服,再到技術支援,每個層級都檢查問題,如果解決不了,就往下一個層級傳遞。這樣不僅提高了效率,還能把不同的職責分開,讓各個層級專注於自己擅長的領域。


責任鏈模式的優缺點

責任鏈模式的一大好處是它提高了系統的靈活性和可擴展性。你可以在不修改現有邏輯的情況下,新增處理請求的物件,就像公司可以隨時新增一個新的主管角色來解決特定問題一樣。


但缺點是如果責任鏈太長,可能會導致系統效率降低,因為請求可能要經過很多步驟才能找到合適的處理者。另外沒有設定合理的終止條件的話,請求可能會無限傳遞最終導致問題無法解決。


總結一下,責任鏈模式為我們提供了一個靈活的解決方案,適合需要多層處理的系統。它讓每個物件專注於自己的責任範圍,避免寫出冗長的條件判斷,也讓系統更容易擴展和維護。不過在實作時要小心處理責任鏈過長或無限循環的問題。


設計模式的魅力在哪?參考我今年在iThome鐵人賽寫的文章吧。
https://ithelp.ithome.com.tw/articles/10349507

    avatar-img
    6會員
    83內容數
    對於經營自媒體、部落格或社群媒體感興趣?我專注於提供實用的寫作技巧、數位行銷策略,以及個人成長建議。 每週,我會分享提升寫作技巧、優化部落格經營、有效管理社群媒體、以及投資理財的寶貴知識。追蹤我,獲得實用的工具和建議,讓你的個人品牌和財務管理更上一層樓!
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    ShengYu的沙龍 的其他內容
    你有沒有曾經正在玩一個遊戲,剛剛過了一個超難的關卡,但突然手滑點錯選項,整個進度被重置了?這時候你一定會希望有個「存檔」功能,能讓你回到之前的關卡。這正是備忘錄模式 Memento Pattern 想解決的問題。 備忘錄模式讓我們能夠保存某個物件的狀態,並在需要時還原這些狀態,像是一個「後悔藥
    在開發大型系統時,常常會發現各個物件之間的溝通愈來愈複雜,像是編織成了一張複雜的蜘蛛網。每個物件相互依賴,任何改動都可能牽一髮而動全身。這時候中介者模式就能幫助我們化繁為簡,成為一個「協調者」,讓物件之間的溝通變得簡單清晰。 什麼是中介者模式? 中介者模式是一種行為型設計模式,它讓物件之間的
    你有沒有遇過這樣的情況:需要一個接一個地處理某個集合裡的東西,但又不想去理解它內部是如何儲存的?就像你讀書時,只要翻頁閱讀,不用去管書的裝訂方式。這就是迭代器模式要解決的問題。 什麼是迭代器模式? 迭代器模式就是提供了一個統一的方式來遍歷集合中的元素,而不必暴露集合的內部結構。這很像你在看一
    你有沒有注意到,有些應用程式的行為會根據不同的狀態而有所不同?當你使用音樂播放器時,按下「播放」按鈕,播放器會開始播放音樂;當音樂處於暫停狀態時,按下同一個按鈕卻是繼續播放,而不是重頭播放。這就是狀態模式的典型應用。每一個狀態都對應著不同的行為,而這些行為隨著狀態的變化而變化。 什麼是狀態模式
    想像一下你要準備一場派對,需要買很多東西:零食、飲料、裝飾品等等。通常你可能得跑好幾個商店,每個商品都要分別結帳,光是想到這就覺得頭大。但現在有了一個新的購物平台,你只要把想買的東西全部加到購物車,然後點一下「結帳」,這些東西就會自動送到你家。這不就是超方便嗎?這就是 門面模式 Facade Pat
    今天來聊聊一個有趣的組合模式 Composite Pattern。想像你正在整理電腦裡的檔案。有時候你會打開單一的檔案,有時候則是整個資料夾。不論是單一檔案還是資料夾,你都希望能用相同的方式來處理它們,比如移動或刪除它們,這就是組合模式要解決的問題! 什麼是組合模式? 組合模式是一種結構型設
    你有沒有曾經正在玩一個遊戲,剛剛過了一個超難的關卡,但突然手滑點錯選項,整個進度被重置了?這時候你一定會希望有個「存檔」功能,能讓你回到之前的關卡。這正是備忘錄模式 Memento Pattern 想解決的問題。 備忘錄模式讓我們能夠保存某個物件的狀態,並在需要時還原這些狀態,像是一個「後悔藥
    在開發大型系統時,常常會發現各個物件之間的溝通愈來愈複雜,像是編織成了一張複雜的蜘蛛網。每個物件相互依賴,任何改動都可能牽一髮而動全身。這時候中介者模式就能幫助我們化繁為簡,成為一個「協調者」,讓物件之間的溝通變得簡單清晰。 什麼是中介者模式? 中介者模式是一種行為型設計模式,它讓物件之間的
    你有沒有遇過這樣的情況:需要一個接一個地處理某個集合裡的東西,但又不想去理解它內部是如何儲存的?就像你讀書時,只要翻頁閱讀,不用去管書的裝訂方式。這就是迭代器模式要解決的問題。 什麼是迭代器模式? 迭代器模式就是提供了一個統一的方式來遍歷集合中的元素,而不必暴露集合的內部結構。這很像你在看一
    你有沒有注意到,有些應用程式的行為會根據不同的狀態而有所不同?當你使用音樂播放器時,按下「播放」按鈕,播放器會開始播放音樂;當音樂處於暫停狀態時,按下同一個按鈕卻是繼續播放,而不是重頭播放。這就是狀態模式的典型應用。每一個狀態都對應著不同的行為,而這些行為隨著狀態的變化而變化。 什麼是狀態模式
    想像一下你要準備一場派對,需要買很多東西:零食、飲料、裝飾品等等。通常你可能得跑好幾個商店,每個商品都要分別結帳,光是想到這就覺得頭大。但現在有了一個新的購物平台,你只要把想買的東西全部加到購物車,然後點一下「結帳」,這些東西就會自動送到你家。這不就是超方便嗎?這就是 門面模式 Facade Pat
    今天來聊聊一個有趣的組合模式 Composite Pattern。想像你正在整理電腦裡的檔案。有時候你會打開單一的檔案,有時候則是整個資料夾。不論是單一檔案還是資料夾,你都希望能用相同的方式來處理它們,比如移動或刪除它們,這就是組合模式要解決的問題! 什麼是組合模式? 組合模式是一種結構型設
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    從委託、設計、提案至請款的五大階段。接案設計師不只是「會設計」而已,更需要學會與客戶溝通,甚至是基本的文件處理。
    在專案管理中,如何有效經營利害關係人是確保專案成功的關鍵。這篇文章分享了一些技巧,包括識別利害關係人、設定期望、保持良好溝通及找到共同利益等策略,幫助讀者在專案中建立良好的關係,減少誤解和不必要的驚喜,最終達成專案目標。
    Thumbnail
    作為管理者,同事拿著專案問題來尋找幫助時, 你會選擇直接給建議,還是引導同事他們思考解決方案呢? 此時,主管會想,幫他解決只要5分鐘,若由他自行處理,先不管猴年馬月才能完成,若出狀況,會需要更多時間來善後。 但主管考量在三後,為了讓同事能獨立解決問題,當下決定不給予建議,畢竟,成長
    Thumbnail
    專案經理在專案管理中與不同角色進行溝通和談判的藝術。通過定期會議和主動傾聽建立團隊信任,定期更新和展示同理心管理客戶期望,雙贏思維和充分準備協調三方合作夥伴,以及數據驅動的簡潔匯報獲得高層支持。案例展示靈活應用這些策略,確保專案按時按質完成。
    Thumbnail
    本文討論了組織文化、知識管理、部門目標和策略等方面的問題,提供了各種建議和策略,讓您更好地理解並應對組織中的各種挑戰。
    Thumbnail
    本篇討論專案經理收到任務後的基本動作,還有如何挖掘出簡報文字之下客戶真正想要的東西。
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    從委託、設計、提案至請款的五大階段。接案設計師不只是「會設計」而已,更需要學會與客戶溝通,甚至是基本的文件處理。
    在專案管理中,如何有效經營利害關係人是確保專案成功的關鍵。這篇文章分享了一些技巧,包括識別利害關係人、設定期望、保持良好溝通及找到共同利益等策略,幫助讀者在專案中建立良好的關係,減少誤解和不必要的驚喜,最終達成專案目標。
    Thumbnail
    作為管理者,同事拿著專案問題來尋找幫助時, 你會選擇直接給建議,還是引導同事他們思考解決方案呢? 此時,主管會想,幫他解決只要5分鐘,若由他自行處理,先不管猴年馬月才能完成,若出狀況,會需要更多時間來善後。 但主管考量在三後,為了讓同事能獨立解決問題,當下決定不給予建議,畢竟,成長
    Thumbnail
    專案經理在專案管理中與不同角色進行溝通和談判的藝術。通過定期會議和主動傾聽建立團隊信任,定期更新和展示同理心管理客戶期望,雙贏思維和充分準備協調三方合作夥伴,以及數據驅動的簡潔匯報獲得高層支持。案例展示靈活應用這些策略,確保專案按時按質完成。
    Thumbnail
    本文討論了組織文化、知識管理、部門目標和策略等方面的問題,提供了各種建議和策略,讓您更好地理解並應對組織中的各種挑戰。
    Thumbnail
    本篇討論專案經理收到任務後的基本動作,還有如何挖掘出簡報文字之下客戶真正想要的東西。