命令模式,先占位,由于文章太耗时,后面补上。
using System;
using System.Collections.Generic;
using System.Linq;
namespace SimpleFactory
{
class Program
{
static void Main(string[] args)
{
服务员 servicer = new 服务员();
马师傅 shifu = new 马师傅();
var work1 = new 烧菜(shifu, "酸菜鱼");
servicer.客人下单(work1);
servicer.下达命令();
Console.WriteLine();
老板娘 boss = new 老板娘();
张阿姨 ayi = new 张阿姨();
var work2 = new 收拾(ayi);
boss.赶紧干活(work2);
boss.下达命令();
}
}
/// <summary>
/// 命令接收者接口
/// </summary>
public interface 厨师
{
void 制作(string 菜);
}
public class 刘师傅 : 厨师
{
public void 制作(string 菜)
{
Console.WriteLine($"做出了一道香喷喷的菜:{菜}");
}
}
public class 马师傅 : 厨师
{
public void 制作(string 菜)
{
Console.WriteLine($"做出了一道香喷喷的菜:{菜}");
}
}
/// <summary>
/// 后勤人员接口,如洗碗工、扫地阿姨
/// </summary>
public interface 后勤
{
void 作业();
}
public class 孙阿姨 : 后勤
{
public void 作业()
{
Console.WriteLine($"扫啊扫,地板扫得很干净了");
}
}
public class 张阿姨 : 后勤
{
public void 作业()
{
Console.WriteLine($"洗啊洗,今天碗太多了,还在不停的洗碗中。。。");
}
}
public interface 命令
{
void 执行命令();
}
public abstract class 命令控制中心 : 命令
{
protected 命令控制中心() { }
public abstract void 执行命令();
}
public class 烧菜 : 命令控制中心
{
private 厨师 _厨师;
private string _需要做的菜;
public 烧菜(厨师 厨师, string 菜)
{
this._厨师 = 厨师;
this._需要做的菜 = 菜;
}
public override void 执行命令()
{
Console.WriteLine($"{this._厨师.GetType().Name}接到了指令");
this._厨师.制作(this._需要做的菜);
}
}
public class 收拾 : 命令控制中心
{
private 后勤 _后勤;
public 收拾(后勤 后勤)
{
this._后勤 = 后勤;
}
public override void 执行命令()
{
Console.WriteLine($"{this._后勤.GetType().Name}接到了指令");
this._后勤.作业();
}
}
public class 服务员
{
private 命令 _command;
public void 客人下单(命令 command)
{
this._command = command;
}
public void 下达命令()
{
this._command.执行命令();
}
}
public class 老板娘
{
private 命令 _command;
public void 赶紧干活(命令 command)
{
this._command = command;
}
public void 下达命令()
{
this._command.执行命令();
}
}
}