- 命令模式
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
//将一个接收者绑定于一个动作,调用接收者相应的操作,以实现 excute
abstract class Command
{
protected Receiver recceiver;
public Command(Receiver receiver){
this.receiver = receiver
}
abstract public void Excute();
}
//具体命令类
class ConcreteCommand :Command
{
public ConcreteCommand(Receiver receiver):base(receiver)
{
}
public override void Excute()
{
receiver.Action();
}
}
//调用者
class Invoker
{
private Command command;
public void SetCommand(Command command){
this.command = command;
}
public void ExcuteCommand()
{
command.Excute();
}
}
//接收者
class Receiver
{
public void Action()
{
Console.WriteLine("执行请求!");
}
}
//客户端调用
static void Main(string[] args)
{
//创建接收者
Receiver r= new Receiver();
//创建命令
Command c = new ConcreteCommand(r);
//创建调用者
Invoker i = new Invoker();
//设置命令
i.SetCommand(c);
//执行命令
i.ExcuteCommand();
Console.Read();
}