• 【设计模式】19.责任链模式


    说明:挺直白,就是某个人是有哪些责任,哪些不是他的。比如请假,1天可以主管批准,1天以上需要部门经理批准,3天以上需要总监批准。就在类里设定好下一个责任人是哪个就可以了。

    实现:

    public class Employee
        {
            public int day { get; set; }
            public Employee(int _day) { day = _day; }
            public void qingjia(int _day)
            {
                //请多少天
                day = _day;
            }
        }
    
        public abstract class ABS_zeren
        {
            public ABS_zeren Nextparson { get; set; }//下一个责任人
            public string Name { get; set; }
            public ABS_zeren(string _name)
            {
                Name = _name;
            }
    
            public abstract void shenpi(Employee qj);
        }
    
        /// <summary>
        /// 主管
        /// </summary>
        public class zhuguan : ABS_zeren
        {
            public zhuguan(string _name) : base(_name) { }
            public override void shenpi(Employee qj)
            {
                if(qj.day < 1)
                {
                    //我可以审核
                }
                else if(Nextparson != null)
                {
                    //给下一个责任人
                    Nextparson.shenpi(qj);
                }
            }
        }
    
        /// <summary>
        /// 经理
        /// </summary>
        public class jingli : ABS_zeren
        {
            public jingli(string _name) : base(_name) { }
            public override void shenpi(Employee qj)
            {
                if (qj.day>1 && qj.day < 3)
                {
                    //我可以审核
                }
                else if(Nextparson!=null)
                {
                    //给下一个责任人
                    Nextparson.shenpi(qj);
                }
            }
        }
    
        //开始请假
        public class test
        {
            public void start()
            {
                ABS_zeren zhuguan = new zhuguan("陈主管");
                ABS_zeren jingli = new jingli("黄经理");
    
                //要设置下一个责任人
                zhuguan.Nextparson = jingli;
                jingli.Nextparson = null;
    
                //请假2天
                Employee emp = new Employee(2);
    
                //责任人审批
                zhuguan.shenpi(emp);
                
            }
        }
  • 相关阅读:
    每天一个linux命令(6):mv命令
    每天一个linux命令(5):rm 命令
    每天一个linux命令(4):mkdir命令
    每天一个linux命令(3):pwd命令
    每天一个linux命令(2):cd命令
    每天一个linux命令(1):ls命令
    Linux下svn命令详解
    Linux下SVN安装配置
    SVN命令使用详解
    分布式Web服务器架构
  • 原文地址:https://www.cnblogs.com/laokchen/p/13544122.html
Copyright © 2020-2023  润新知