使多個對象都有機會都有機會處理請求,進而避免請求的發送者和接受者之間的耦合關系。将這些對象連成一條鍊,并沿着這條鍊傳遞該請求,直到有一個對象處理它為止。
a void coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. chain the receiving objects and pass the request along the chain until an object handles it.

責任鍊模式的結構中包括兩種角色。
+ 處理者(handler):處理者是一個接口,負責規定具體處理者處理使用者請求的方法以及具體處理者設定後繼對象的方法。
+ 具體處理者(concrete handler):具體處理者是實作處理者的類的執行個體。具體處理者通過調用處理者接口規定的方法處理使用者的請求,即在接到使用者的請求後,處理者将調用接口規定的方法,在執行該方法的過程中,如果發現能處理使用者的請求,就處理有關資料,否則就回報無法處理的資訊給使用者,然後将使用者的請求傳遞給自己的後繼對象。
責任鍊中的對象隻和自己的後繼是低耦合關系,和其他對象毫無關聯,這使得編寫處理者對象以及建立責任鍊變得非常容易。
當在處理者中配置設定職責時,責任鍊給應用程式更多的靈活性。
應用程式可以動态地增加、删除處理者或重新指派處理者的職責。
應用程式可以動态地改變處理者之間的先後順序。
使用責任鍊的使用者不必知道處理者的資訊,使用者不會知道到底是哪個對象處理了它的請求。
有許多對象可以處理使用者的請求,希望程式在運作期間自動确定處理使用者的那個對象。
希望使用者不必明确指定接受者的情況下,向多個接受者的一個送出請求。
程式希望動态制定可處理使用者請求的對象集合。
<a href="https://github.com/androidwolf">mygithub</a>