设计模式实践-责任链模式

场景

权限递推

实现代码

处理抽象类

namespace DesignPatterns.ChainResponsibility
{
    /// 
    /// 处理者抽象类
    /// 
    public abstract class Handler
    {
        /// 
        /// 上级处理者
        /// 
        protected Handler Successor;

        /// 
        /// Initializes a new instance of the  class.
        /// 
        /// 上级处理者
        protected Handler(Handler successor)
        {
            this.Successor = successor;
        }

        /// 
        /// 处理动作
        /// 
        /// 请求代码
        public abstract void HandleRequest(int request);
    }
}

经理处理类

namespace DesignPatterns.ChainResponsibility
{
    /// 
    /// 经理
    /// 
    public class ManagerHandler : Handler
    {
        /// 
        /// Initializes a new instance of the  class.
        /// 
        /// 经理上级
        public ManagerHandler(Handler successor) : base(successor)
        {
        }

        /// 
        /// 经理处理动作
        /// 
        /// 请求代码
        public override void HandleRequest(int request)
        {
            if (request > 100)
            {
                Console.WriteLine("权限不足,由上级处理");
                this.Successor.HandleRequest(request);
            }
            else
            {
                Console.WriteLine($"由经理处理:{request}");
            }
        }
    }
}

Boss处理类

namespace DesignPatterns.ChainResponsibility
{
    /// 
    /// 老板
    /// 
    public class BossHandler : Handler
    {
        /// 
        /// Initializes a new instance of the  class.
        /// 
        /// 老板上级,为null
        public BossHandler(Handler successor) : base(successor)
        {
        }

        /// 
        /// 经理处理动作
        /// 
        /// 请求代码
        public override void HandleRequest(int request)
        {
            Console.WriteLine($"由老板处理:{request}");
        }
    }
}

相关调用

Handler bossHandler = new BossHandler(null);
Handler managerHandler = new ManagerHandler(bossHandler);
managerHandler.HandleRequest(50);
managerHandler.HandleRequest(200);

Out

由经理处理:50
权限不足,由上级处理
由老板处理:200

转载于:https://www.cnblogs.com/4thing/p/5700554.html

你可能感兴趣的:(设计模式实践-责任链模式)