责任链模式

避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

UML图:

示例代码:

    abstract class AbstractHandler
    {
        public AbstractHandler NextHandler { get; set; }

        public abstract void Requst(int vlaue);

    }
    class HandlerA:AbstractHandler
    {
        public override void Requst(int vlaue)
        {
            if (vlaue<10)
            {
                Console.WriteLine("A处理");
            }
            else
            {
                this.NextHandler.Requst(vlaue);
            }
        }
    }
    class HandlerB:AbstractHandler
    {
        public override void Requst(int vlaue)
        {
            if (vlaue >= 10)
            {
                Console.WriteLine("B处理");
            }
            else
            {
                this.NextHandler.Requst(vlaue);
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            HandlerA a =new HandlerA();
            HandlerB b =new HandlerB();
            a.NextHandler = b;
            a.Requst(9);
        }
    }
原文地址:https://www.cnblogs.com/chenyishi/p/9138603.html