职责链模式

    static class Program
    {
        static void Main()
        {
            员工 员工 = new 普通员工();
            员工 主管 = new 员工主管();
            员工 boss = new BOSS();
            员工.设置上级(主管);
            主管.设置上级(boss);
            快递包裹 包裹 = new 快递包裹();
            包裹.价值 = 80040;
            员工.收取快递(包裹);
            Console.ReadKey();
        }
    }
    abstract class 员工
    {
        protected 员工 上级;
        public void 设置上级(员工 员工)
        {
            this.上级 = 员工;
        }
        public abstract void 收取快递(快递包裹 包裹);
    }
    class 普通员工 : 员工
    {
        public override void 收取快递(快递包裹 包裹)
        {
            if (包裹.价值 < 50)
            {
                Console.WriteLine("这么没价值的我等小虾签收了");
                包裹.签收();
            }
            else
            {
                上级.收取快递(包裹);
            }
        }
    }
    class 员工主管 : 员工
    {
        public override void 收取快递(快递包裹 包裹)
        {
            if (包裹.价值 < 500)
            {
                Console.WriteLine("还没500块的我签收了");
                包裹.签收();
            }
            else
            {
                上级.收取快递(包裹);
            }
        }
    }
    class BOSS : 员工
    {
        public override void 收取快递(快递包裹 包裹)
        {
            Console.WriteLine("多少钱的我都能收");
            包裹.签收();
        }
    }
    class 快递包裹
    {
        public int 价值 { get; set; }
        public void 签收()
        {
            Console.WriteLine("签收完毕,下班!");
        }
    }

 

posted @ 2014-04-03 15:36  Rookier  阅读(137)  评论(0编辑  收藏  举报