责任链模式,就是为了完成一个流程,每个节点只是这个流程中的一个环节。它们的特点是必须相串连。

应用场景:

1、工作流

2、管道模型

3、各种类型的审批流程

代码:

    abstract class BaseNode
    {
        public BaseNode NextNode { get; set; }
        public abstract void Approval(Content RequestContent);
    }
    class PM : BaseNode
    {
        public override void Approval(Content RequestContent)
        {
            if (RequestContent.days <= 1)
            {
                RequestContent.states = 0;
                RequestContent.rmark = string.Format("{0}审批通过!", this.ToString());
            }
            else
            {
                if (base.NextNode != null)
                {
                    base.NextNode.Approval(RequestContent);
                }
                else
                {
                    RequestContent.rmark = "审批终止!";
                }
            }
        }
    }
    class Content
    {
        public int id { get; set; }
        public string name { get; set; }
        public string rmark { get; set; }
        public int days { get; set; }

        public state states { get; set; }

        public enum state { pass, reject, stops }
    }
    while (true)
            {

                Console.WriteLine("----------------------------");
                Console.WriteLine("请输入请假天数");

                var inputDays = Console.ReadLine();

                PM pm = new PM();
                CTO cto = new CTO();
                CEO ceo = new CEO();
                Boss bs = new Boss();

                pm.NextNode = cto;
                cto.NextNode = ceo;
                ceo.NextNode = bs;

                Content RequestContent = new Content() { days = int.Parse(inputDays), id = 100, name = "张云", rmark = "请求审批" };
                pm.Approval(RequestContent);

                if (RequestContent.states == 0)
                {
                    Console.WriteLine("太好了,审批通过:{0}", RequestContent.rmark);
                }
                else
                {
                    Console.WriteLine("审批未通过");
                }

            }

 

posted on 2016-07-12 10:17  梦回过去  阅读(320)  评论(0编辑  收藏  举报