设计模式之命令模式
定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
abstract class Command { protected Receiver re; public Command(Receiver re) { this.re = re; } abstract public void Execute(); } class ConcreteCommand : Command { public ConcreteCommand(Receiver re):base(re) { } public override void Execute() { re.Action(); } } public class Receiver //任意一个类 { public void Action() { Console.WriteLine("执行请求"); } } class Invoker { private Command command; public void setCommand(Command comd) { this.command = comd; } public void ExecuteCommand() { command.Execute(); } }
命令模式的优点:
1.它能较容易的设计一个命令队列(invoker类中添加命令列表)
2.在需要的情况下,可以较容易地将命令记入日志
3.允许接收请求 的一方决定是否要否决请求
4.容易的实现对请求的撤销和重做
5.增加新的具体命令类很容易,不会影响其他类