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("开始煮汤"); } }