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