更新時間:2023-05-24 來源:黑馬程序員 瀏覽量:
責任鏈設計模式是為了避免請求發(fā)送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一對象記住其下一個對象的引用而連成一條鏈;當有請求發(fā)生時,可將請求沿著這條鏈傳遞,直到有對象處理它為止。
抽象處理者(Handler)角色:定義一個處理請求的接口,包含抽象處理方法和一個后繼連接。
具體處理者(Concrete Handler)角色:實現(xiàn)抽象處理者的處理方法,判斷能否處理本次請求,如果可以處理請求則處理,否則將該請求轉(zhuǎn)給它的后繼者。
客戶類(Client)角色:創(chuàng)建處理鏈,并向鏈頭的具體處理者對象提交請求,它不關(guān)心處理細節(jié)和請求的傳遞過程。
優(yōu)點:降低了對象之間的耦合度增強了系統(tǒng)的可擴展性增強了給對象指派職責的靈活性責任鏈簡化了對象之間的連接責任分擔
缺點:對比較長的職責鏈,請求的處理可能涉及多個處理對象,系統(tǒng)性能將受到一定影響。職責鏈建立的合理性要靠客戶端來保證,增加了客戶端的復雜性,可能會由于職責鏈的錯誤設置而導致系統(tǒng)出錯,如可能會造成循環(huán)調(diào)用。