責任鏈模式

2021-07-25 18:42:48 字數 1751 閱讀 4428

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

我們先來看一下類圖

比如我們要向公司請求乙個福利,那我們可能會去和我們的專案經理說,然後專案經理說這個我做不了主,他要你去和cto溝通,然後你的cto和你說,這個他也做不了主,要你去向總裁請示,然後你就去找總裁了,總裁看了一下你的業績,感覺你這個人還不錯,就同意了你的請求。

這是責任鏈在現實生活中的體現,有幾個點比較重要,就是說,我一定要通過這個順序從頭到尾執行,我請求的人其實都可能解決掉我的問題,如果解決不到,就交由上一層去解決。這樣說,是不是好理解一點。

好啦,下面我們還是來看一看責任鏈的通用原始碼吧。

1.抽象處理者

public

abstract

class handler elseelse

}return response;

}//設定下乙個處理者是誰

public

void

setnext(handler _handler)

//每個處理者都有乙個處理級別

protected

abstract level gethandlerlevel();

//每個處理者都必須實現處理任務

protected

abstract response echo(request request);

}

抽象處理者實現三個職責:已是定義乙個請求處理的方法handlermessage,唯一對外開放的方法;二是定義乙個鏈的編排方法setnext,設定下乙個處理者;三是定義具體的請求者必須實現的兩個方法:定義自己能夠處理的級別gethandlerlevel和具體的處理方法echo

2.具體的處理者

public

class

concretehandler1

extends

handler

//設定自己的處理級別

protected level gethandlerlevel()

}public

class

concretehandler2

extends

handler

//設定自己的處理級別

protected level gethandlerlevel()

}public

class

concretehandler3

extends

handler

//設定自己的處理級別

protected level gethandlerlevel()

}

在處理者中涉及三個雷:level類負責定義請求和處理級別,request類負責封裝請求,response負責封裝鏈中返回的結果,該三個類都需要根據業務產生。

3.模式中有關框架**

public

class level

public

class request

}public

class response

4.場景類

public

class client

}

責任鏈模式

責任鏈模式 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,同...