18.命令模式
class Program
{
static void Main(string[] args)
{
OrderReceiver o = new OrderReceiver(); //命令的响应者 >响应传达者传达的命令
Command ecmd = new examcmd(o); //命令的传达和监视者>传达发出这的命令给响应者
Invoke ka = new Invoke(ecmd); //命令的发出者
ka.Init(); //>传达给传递者扩散命令
Console.WriteLine("考试结束后");
Command pcmd = new papercmd(o); //命令的传达和监视者
Invoke kb = new Invoke(pcmd); //命令的发出者
kb.Init();
Console.ReadLine();
}
}
public class OrderReceiver// 命令最后的执行者
{
public void GetExam()
{
Console.WriteLine("进行期中考试!");
}
public void GetPaper()
{
Console.WriteLine("交卷!");
}
}
public abstract class Command// 传递命令者的抽象类
{
protected OrderReceiver recediver;// 命令执行者
public Command(OrderReceiver recediver)
{
this.recediver = recediver;
}
public abstract void Action();// 执行命令的方法
}
public class examcmd : Command// 执行考试命令传递者
{
public examcmd(OrderReceiver recetive) : base(recetive) { }
public override void Action()
{
recediver.GetExam();
}
}
public class papercmd : Command// 执行交卷命令传递者
{
public papercmd(OrderReceiver request) : base(request) { }
public override void Action()// 执行命令
{
recediver.GetPaper();//开始考试
}
}
public class Invoke// 命令的发出者
{
protected Command cmd;
public Invoke(Command cmd)
{
this.cmd = cmd;
}
public void Init()
{
cmd.Action();
}
}