責任鏈模式

2021-08-08 23:54:50 字數 3060 閱讀 5412

概述

責任鏈模式(chain of responsibility),是行為型設計模式之一。在程式設計中,將每乙個節點看做是乙個物件,每乙個物件擁有不同的處理邏輯,將乙個請求從鏈式的首端發出,沿著鏈的路徑一次傳遞給每一節點物件,直到有物件處理這個請求為止。

定義

使多個物件都有機會處理請求,從而避免了請求的傳送者和接收者之間的耦合關係。將這物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止。

簡單實現

假設小明需要找公司領導報銷差旅費5w元。小明找到組長,組長發現數額太大他沒有審批權,於是組長找到部門主管。部門主管只能審批五千元一下的費用,於是部門主管又跑去找經理,經理一看二話不說就找到了老闆辦公室,因為他也只能批1w以下的費用。上面的場景實際就是乙個責任鏈的例子。小明的請求經過層層傳達直至請求被處理,自始至終小明只與組長產生關聯,後面具體由誰處理的票據小明並不關心。責任鏈模式在這裡很好的將請求者與處理者解耦。**模擬如下:

首先定義乙個抽象的處理者類,然後建立具體的處理者

然後例項化各個處理者,並將他們連成鏈

groupleader groupleader =

new

groupleader();

director director =

new

director();

manager manager =

new

manager();

boss boss =

new

boss();

groupleader.

nexthandler

= director;

director.

nexthandler

= manager;

manager.

nexthandler

= boss;

groupleader.handlerequest(

10000);

注意

對於責任鏈中的每乙個處理者物件,其只有兩個行為,一是處理請求,二是將請求轉送給下乙個節點,不允許某個處理者物件在處理了請求之後又將請求轉送給下乙個節點。對一條責任鏈來說,乙個請求最終只有兩種情況,一是被某個處理物件處理,另乙個是所有物件都沒有對其處理,對於前一種情況我們稱該責任鏈為純的責任鏈,對於後一種情況我們稱為不純的責任鏈。實際應用中,我們所見到的責任鏈模式大多為不純的責任鏈。

責任鏈模式

責任鏈模式 chain of responsibility 的目標是使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞請求,直到有乙個物件處理它為止。舉個例子。你到銀行去辦理業務,只是簡單的存個錢,也許atm就解決你的問題。如果你是為了交費...

責任鏈模式

有3個request與3個handler,每個request由相應的handler來處理,當乙個handler與request不匹配時則傳遞給下乙個handler來處理 inte ce request class request1 implements request class request2 ...

責任鏈模式

了解了一下責任鏈模式,簡單的說下自己的理解吧 責任鏈就是說待處理的資料在request的時候,先經過filter1的處理,再經過filter2的處理,然後response時,先經過filter2的處理,在經過filter1的處理。實現思路是filterchain包括filter1和filter2,同...