职责链模式(Chain of Responsibility Pattern)

 

职责链模式(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();
        }
    }
}

调用

Handler handler1 = new ConcreteHandlerA();
Handler handler2 = new ConcreteHandlerB();

handler1.SetHandler(handler2);
//执行
handler1.HandleRequest();

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值