什麼是鍊?前後相連,一個連接配接下一個,其中包括多個節點,其實責任鍊模式也類似,他是多個對象之間互相關聯,下一個對象的操作由上一個對象關聯下來,上一個對象有個方法用于指向其他對象。職責鍊之間的前後關系是可以改變的,主要看上一節點主要指向哪個節點。
android中事件分發就是責任鍊模式的具體表現:
View的ontouchEvent傳回值設定,如果為true,交個自己的消費事件的方法去處理,如果為false,則繼續向下一個進行傳遞。
如何實作責任鍊模式:
比如責任鍊上有,A,B,C三個對象,如果A有權限則自己處理,否則傳遞下去給B,B如果沒有權限處理,則傳遞下去,C如果有權限處理,則處理,否則不處理。
A中有判斷的邏輯,一個是符合條件的,自己去處理,一個是不符合自身條件的,交給鍊條中的下一個對象去處理,B,C一次類推都是同樣的道理。
花鼓傳花比賽,失敗表演節目的例子來講講:
首先建立責任鍊傳遞的抽象類:比如下面這個類:
基類,封裝處理handler()和指向下一個節點setNextHandler()的方法:
傳花同學A:
傳花同學B:
傳花同學C:
測試類:
測試結果: