您好,登錄后才能下訂單哦!
什么是責(zé)任鏈模式
所謂責(zé)任鏈模式,就是使多個對象都有機會處理請求,并講這些對象連成一條鏈,沿著這條鏈傳遞請求直到有對象處理請求為止的設(shè)計模式。責(zé)任鏈模式可以避免請求的發(fā)送者和接收者之間的耦合關(guān)系。
責(zé)任鏈模式的實現(xiàn)方式
熟悉我的人都知道我對華容道游戲情有獨鐘,2014年用AndEngine實現(xiàn)了一個華容道交了畢業(yè)設(shè)計,2015年用OGEngine參賽中了一部手機……我每年都要用不同的新技術(shù)實現(xiàn)一遍華容道。華容道的背景故事請見《三國演義》第五十回。
這次我拿華容道給大家講解一遍責(zé)任鏈模式,首先定義一個抽象的將軍類:
public abstract class General { |
趙云:
public class ZhaoYun extends General { |
張飛:
public class ZhangFei extends General { |
關(guān)羽:
public class GuanYu extends General { |
曹操走華容道:
ZhaoYun zhaoYun = new ZhaoYun(); |
你可以試試,輸出結(jié)果和《三國演義》的劇情是否一致。
Android源碼中的責(zé)任鏈模式
(1)如果你讀完上文的代碼之后,沒有想到ViewGroup事件的分發(fā)處理機制,那么你不適合學(xué)習(xí)設(shè)計模式,還是先補充補充基礎(chǔ)知識吧。
Android開發(fā)中如何利用責(zé)任鏈模式
(1)責(zé)任鏈模式可以對請求者和處理者關(guān)系解耦,提高代碼的靈活性。Broadcast可以分為異步的Normal Broadcast和根據(jù)優(yōu)先級依次傳播的Ordered Broadcast(有序廣播)兩種,有序廣播根據(jù)優(yōu)先級依次傳播,直到有接收者將其終止或所有接收者都不中止它,這是典型的責(zé)任鏈模式。
需要注意的幾個問題
(1)責(zé)任鏈模式的最大缺點在于其對鏈中請求處理者的遍歷,如果處理者層級太多,尤其是在遞歸調(diào)用中,責(zé)任鏈模式非常影響性能。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。