職責(zé)鏈模式

職責(zé)鏈模式定義

避免將窮求發(fā)送者與接受者耦合在一起,讓多個對象都有機(jī)會接受請求,將這些對象鏈接成一條鏈,平切沿著這條鏈傳遞請求,直到有對象處理它為止,職責(zé)鏈模式是一種對象行為型模式

職責(zé)鏈模式結(jié)構(gòu)圖


image.png

職責(zé)鏈模式主要優(yōu)缺點

優(yōu)點:
1.職責(zé)鏈模式使得一個對象無須知道是其他哪一個對象處理其請求,對象僅需要知道該窮求會被處理即可,接受者和發(fā)送者都沒有對方的明確信息,且鏈中的對象不需要知道鏈的結(jié)構(gòu),由客戶端負(fù)責(zé)鏈的耦合度。
2.請求處理對象僅需要維持一個指向其后繼者的引用,而不需要維持它對所有的候選處理著的引用,可簡化對象的相互連接。
3.在給對象分配職責(zé)時,責(zé)任鏈可以提供更多靈活性,可以通過在運行時對鏈進(jìn)行動態(tài)的增加或修改來增加處理改變處理一個請求的職責(zé)。
4.在系統(tǒng)中增加一個新的具體請求處理者時,無須修改原有系統(tǒng)的代碼,只需要在客戶端重新建鏈即可,從這一點來看是符合開閉原則的。
缺點:
1.由于一個請求沒有明確的接受者,那么就不能保證它一定會處理,改請求可能一直到鏈的末端都得不到處理;一個請求也可能因為責(zé)任鏈沒有被正確配置而得不到處理。
2.對于比較長的責(zé)任鏈,請求的處理可能涉及多個處理對象,系統(tǒng)性能將受到一定印象,而且進(jìn)行代碼調(diào)整時不太方便。
3.如果建鏈不當(dāng),可能會造成循環(huán)調(diào)用,導(dǎo)致系統(tǒng)陷入死循環(huán)。

職責(zé)鏈模式適用場景

1.有多個對象可以處理同一個請求,具體哪個請求處理對象該請求帶運行時刻再確定,客戶端只需要將請求提交到鏈上,而無須關(guān)心請求的處理對象是誰,以及是如何處理的。
2,在不明確制定接受者的情況下,想多個對象中的一個提交一個請求。
3,可動態(tài)制定一組對象處理請求。客戶端可以動態(tài)創(chuàng)建責(zé)任鏈來處理窮求,還可以改變鏈中處理者之間的先后循序。

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

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

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