職責鏈模式(chain of responsibility pattern
):避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些物件連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。職責鏈模式是一種物件行為型模式。
在web應用程式中,一般都會使用到filter,即攔截請求並對請求做一定處理,比如解碼、驗證是否登入、驗證使用者是否有許可權、token是否失效等,可能會有新的操作加入,也可能會去掉一些filter,客戶端可以直接依次呼叫filter,但是一旦修改順序或增刪filter就必須修改**,這時候可以使用職責鏈模式,可以將filter資訊放入配置,方便靈活地組合和使用。
職責鏈模式一般在有鏈式請求的場景使用,比如審批流程、冒泡事件、過濾、預處理等等,職責鏈分為兩種:純的職責鏈和不純的職責鏈,前者是需要被處理的物件最多隻會在某乙個處理器中得到處理,比如冒泡事件,一旦事件被處理了,就不會再向上傳遞;後者是需要被處理的物件會在多個處理器中被處理,比如filter、請假條等,因為這些待處理物件不僅要被前面的處理器處理,同樣需要被後面的處理器處理,處理過程中一旦檢測到不滿足條件就會中斷。
職責鏈模式的主要優點如下:
職責鏈模式的主要缺點如下:
在以下情況下可以考慮使用職責鏈模式:
設計模式系列漫談之十二 職責鏈模式
從牙膏廣告說起 在午茶小憩間,以 成語接龍 形式,通過帥哥美女之口巧妙地把牙齒常見的症狀表達出來,從而突出雲南白藥牙膏的獨特功效。這一極其創意的廣告為雲南白藥贏得了巨大的市場,也使其產品為廣大消費者所熟悉,創造了家喻戶曉的品牌效應。成語接龍是一種人們喜聞樂見的遊戲。就遊戲規則來講非常簡單,即用前乙個...
設計模式 職責鏈
一 功能 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。二 優缺點 客戶不知道它的請求將被哪個物件處理。三 實現 有兩種實現思路。一種是自己先處理,處理不成功了再交給其他人處理。另一種是先交給別人處理,...
職責鏈 設計模式
知識點 職責鏈 chain of responsibility 知識內容 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。示例 includeusing namespace std typedef int...