【设计模式】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);
            
        }
    }

 

posted on 2020-08-22 12:51  一个小目标一次坑记录  阅读(125)  评论(0编辑  收藏  举报