命令模式

    class Program
    {
        static void Main(string[] args)
        {
            命令抽象 点一份汤 = new 煮汤命令();
            命令抽象 来份小炒 = new 炒菜命令();
            服务员 小二 = new 服务员();
            小二.添加命令(点一份汤);
            小二.添加命令(来份小炒);
            小二.取消命令(点一份汤);
            小二.通知后厨();
            Console.ReadKey();
        }

    }
    class 服务员
    {
        List<命令抽象> 命令 = new List<命令抽象>();
        public void 添加命令(命令抽象 客户需求)
        {
            命令.Add(客户需求);
        }
        public void 取消命令(命令抽象 客户需求)
        {
            if (命令.Contains(客户需求))
            {
                命令.Remove(客户需求);
            }
            else
            {
                Console.WriteLine("客官你没有下过这个单");
            }
        }
        public void 通知后厨()
        {
            foreach (var v in 命令)
            {
                v.执行通知命令();
            }
        }
    }
    class 煮汤命令 : 命令抽象
    {
        public override void 执行通知命令()
        {
            Console.WriteLine("后厨厨师开始煮汤啦");
            base.厨师.煮汤();
        }
    }
    class 炒菜命令 : 命令抽象
    {
        public override void 执行通知命令()
        {
            Console.WriteLine("后厨厨师小炒一份");
            base.厨师.炒菜();
        }
    }
    abstract class 命令抽象
    {
        protected 厨师 厨师;
        public 命令抽象()
        {
            厨师 = new 厨师();
        }
        public abstract void 执行通知命令();
    }
    class 厨师
    {
        public void 炒菜()
        {
            Console.WriteLine("开始炒菜");
        }
        public void 煮汤()
        {
            Console.WriteLine("开始煮汤");
        }
    }

 

posted @ 2014-04-01 10:14  Rookier  阅读(181)  评论(0编辑  收藏  举报