设计模式之命令模式

定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

 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.增加新的具体命令类很容易,不会影响其他类

原文地址:https://www.cnblogs.com/luyujie/p/5584457.html