天天看點

設計模式 -- 責任鍊模式或者叫職責鍊模式(Chain of Responsibility(CoR))

什麼是鍊?前後相連,一個連接配接下一個,其中包括多個節點,其實責任鍊模式也類似,他是多個對象之間互相關聯,下一個對象的操作由上一個對象關聯下來,上一個對象有個方法用于指向其他對象。職責鍊之間的前後關系是可以改變的,主要看上一節點主要指向哪個節點。

android中事件分發就是責任鍊模式的具體表現:

View的ontouchEvent傳回值設定,如果為true,交個自己的消費事件的方法去處理,如果為false,則繼續向下一個進行傳遞。

如何實作責任鍊模式:

比如責任鍊上有,A,B,C三個對象,如果A有權限則自己處理,否則傳遞下去給B,B如果沒有權限處理,則傳遞下去,C如果有權限處理,則處理,否則不處理。

A中有判斷的邏輯,一個是符合條件的,自己去處理,一個是不符合自身條件的,交給鍊條中的下一個對象去處理,B,C一次類推都是同樣的道理。

花鼓傳花比賽,失敗表演節目的例子來講講:

 首先建立責任鍊傳遞的抽象類:比如下面這個類:

基類,封裝處理handler()和指向下一個節點setNextHandler()的方法:

傳花同學A:

傳花同學B:

傳花同學C:

測試類:

測試結果:

繼續閱讀