責任鏈模式

2022-03-13 07:43:50 字數 1581 閱讀 1539

責任鏈模式主要應用在對請求的處理上。當乙個請求來臨的時候,a、b、c都有可能去處理,由於a、b、c三者的能力不同,他們會更根據請求中攜帶的資料進行條件判斷,如果滿足自己的條件,才可以被自己處理,否則  需要由其他人處理。在這種情況下,我們可以使用if...else來處理請求,先進行條件判斷,然後交給某人去處理。當然,更好的實現方式是使用責任鏈模式。將請求直接交給a,a自己進行條件判斷,a如果發現自己處理不了,則將請求交給b,b再進行判斷,以此類推。

handler:抽象類,定義處理方法handlemessage;定義編排方法setnext來設定下乙個處理者;定義每個具體的處理者處理級別以及具體處理任務

concretehandler:繼承抽象類,實現自己的處理任務

在責任鏈中前乙個物件可以消費(增刪改)一部分請求資訊後交給下乙個物件也是可以的。

public

abstract

class

handler

else

}return

response;

}protected

void

setnext(handler _handler)

protected

abstractlevell gethandlelevel();

protected

abstract

response echo(request request);

}

具體處理者

class concretehandler extends

handler

//設定自己的處理級別

protected

level gethandlerlevel()

}

模式有關框架的**

class

level

class

request

}class

response

場景類

class

client

handler handler1 = new

concretehandler();

handler handler2 = new

concretehandler();

handler handler3 = new

concretehandler();

//設定鏈中的階段程式1->2->3

handler1.setnext(handler2);

handler2.setnext(handler3);

//提交請求

response response = handler1.handlermessage(new

request());

}

優點:將請求和處理分開,兩者解耦,提高系統的靈活性

缺點:當鍊比較長,處理請求時效能就是乙個問題,二是除錯不是方便

責任鏈模式

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