責(zé)任鏈模式

1.定義:將一個(gè)請(qǐng)求從鏈?zhǔn)降氖锥纬霭l(fā)沿著鏈的路徑依次傳遞給每個(gè)節(jié)點(diǎn)對(duì)象,直到有對(duì)象處理這個(gè)請(qǐng)求為止,使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免的請(qǐng)求發(fā)送者與接收者之間的耦合關(guān)系,是變成更有靈活性。
2.使用場(chǎng)景:
2.1:有多個(gè)對(duì)象可以處理同一個(gè)請(qǐng)求,具體哪個(gè)對(duì)象處理該請(qǐng)求由運(yùn)行時(shí)刻自動(dòng)確定;
2.2:在不明確指定接收者的情況下向多個(gè)對(duì)象中的一個(gè)提交一個(gè)請(qǐng)求;
2.3:可動(dòng)態(tài)指定一組對(duì)象處理請(qǐng)求
3.優(yōu)缺點(diǎn):
優(yōu)點(diǎn):3.1:降低耦合度,將請(qǐng)求發(fā)送者合接收則解耦
3.2:簡(jiǎn)化了對(duì)象,使對(duì)象不需要知道鏈的結(jié)構(gòu)
3.3:增強(qiáng)給對(duì)象指派職責(zé)的靈活性,通過(guò)改變鏈內(nèi)的成員或則調(diào)動(dòng)它們的次序,允許動(dòng)態(tài)的新增或者刪除責(zé)任;
缺點(diǎn):3.1:不能保證請(qǐng)求一定被接收
3.2:系統(tǒng)性能將受到一定的影響,而且在進(jìn)行代碼調(diào)試時(shí)候不太方便,可能造成循環(huán)調(diào)用
3.3:可能不容易觀察運(yùn)行時(shí)的特征,有礙于出錯(cuò)
4.android源碼中使用
4.1:android中觸摸事件的傳遞機(jī)制,就屬于責(zé)任鏈模式從Activity 到phoneWindow,再到我們自己的RootView以及子View層層傳遞,直到有View消費(fèi)改事件;
4.2:okhttp內(nèi)部使用了責(zé)任鏈模式來(lái)完成interceptor攔截器的調(diào)用;
5.實(shí)例演示公司中請(qǐng)求報(bào)銷費(fèi)用例子,不同領(lǐng)導(dǎo)可以批放不同的額度報(bào)銷,職員提交后,申請(qǐng)由下往上傳遞的,直到有領(lǐng)導(dǎo)出現(xiàn)申請(qǐng)
5.1創(chuàng)建領(lǐng)導(dǎo)基類:
5.2創(chuàng)建不同層級(jí)領(lǐng)導(dǎo)實(shí)現(xiàn)類,依次為組長(zhǎng),主管
5.3創(chuàng)建不同的領(lǐng)導(dǎo)對(duì)象,關(guān)聯(lián)責(zé)任鏈,進(jìn)行報(bào)銷申請(qǐng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容