赞
踩
职责链模式(Chain Of Responsibility Pattern):避免将一个请求的发送者和接收者耦合在一起,让多个对象都有机会处理请求,将接受请求的对象连接成一条链,并且沿着链传递请求,知道有一个对象能狗处理它为止
Handler(抽象处理者):它定义一个处理请求的接口,由于不同的具体处理者处理请求不同,因此在处理者中定义一个处理请求的方法,每个处理者的下一个处理者还是一个处理者,所以我们通过定义一个抽象的处理者指定下一个处理者的successor引用作为下一个处理者的关联,通过该引用处理者可以连成一条链。
- abstract class Handler
- {
- protected Handler successor;
- public void SetHandler(Handler handler)
- {
- this.successor = handler;
- }
-
- public abstract void HandleRequest();
- }
ConcreteHandler(具体处理者):处理用户传过来的请求,是抽象处理者的子类,通过调用具体处理者的方法我们可以判断是否能终止这条链,或者将处理转发到下一个具体处理者。
- 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();
- }
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
调用
- Handler handler1 = new ConcreteHandlerA();
- Handler handler2 = new ConcreteHandlerB();
-
- handler1.SetHandler(handler2);
- //执行
- handler1.HandleRequest();
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。