职责链模式(Chain of Responsibility Pattern)
生活随笔
收集整理的這篇文章主要介紹了
职责链模式(Chain of Responsibility Pattern)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
職責(zé)鏈模式(Chain Of Responsibility Pattern):避免將一個請求的發(fā)送者和接收者耦合在一起,讓多個對象都有機會處理請求,將接受請求的對象連接成一條鏈,并且沿著鏈傳遞請求,知道有一個對象能狗處理它為止
?職責(zé)鏈模式的結(jié)構(gòu)
Handler(抽象處理者):它定義一個處理請求的接口,由于不同的具體處理者處理請求不同,因此在處理者中定義一個處理請求的方法,每個處理者的下一個處理者還是一個處理者,所以我們通過定義一個抽象的處理者指定下一個處理者的successor引用作為下一個處理者的關(guān)聯(lián),通過該引用處理者可以連成一條鏈。
abstract class Handler {protected Handler successor;public void SetHandler(Handler handler){this.successor = handler;}public abstract void HandleRequest(); }ConcreteHandler(具體處理者):處理用戶傳過來的請求,是抽象處理者的子類,通過調(diào)用具體處理者的方法我們可以判斷是否能終止這條鏈,或者將處理轉(zhuǎn)發(fā)到下一個具體處理者。
class ConcreteHandlerA : Handler {public override void HandleRequest(){if (successor == null){Console.WriteLine("A終止");}else{//傳遞this.successor.HandleRequest();}} } class ConcreteHandlerB : Handler {public override void HandleRequest(){if (successor == null){Console.WriteLine("B終止");}else{//傳遞this.successor.HandleRequest();}} }調(diào)用
Handler handler1 = new ConcreteHandlerA(); Handler handler2 = new ConcreteHandlerB();handler1.SetHandler(handler2); //執(zhí)行 handler1.HandleRequest();?
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的职责链模式(Chain of Responsibility Pattern)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何更好的工作
- 下一篇: CCCF译文 | 从计算思维到计算行动*