【设计模式】——命令模式(Command)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lrtcsdn/article/details/84064140

行为型模式——命令模式(Command)
定义
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
命令模式结构图
在这里插入图片描述
部分代码理解
Command类,声明执行操作的接口,

abstract class Command
    {
        protected Receiver receiver;
        public Command(Receiver receiver)
        {
            this.receiver = receiver;
        }
        abstract public void Execute();
    
    }

Receiver类,执行接收请求,任何类,都可能作为一个接收者

class Receiver
    {
        public void Action()
        {
            Console.WriteLine("执行请求!");
        }
    }

Invoker类,要求命令执行该请求

class Invoker
    {
        private Command command;
        public void SetCommand(Command command)
        {
            this.command = command; 
        }
    public void ExecuteCommand()
    {
        command.Execute ();
    }
    }

命令模式的优点
1.比较容易设计一个命令队列,
2.在需要的情况下,比较容易将命令计入日志
3.允许接收请求的以防决定是否否决请求
4.可以容易的实现对请求的撤销和重做
5.由于加进新的具体命令类不影响其他的类,增加新的具体命令很容易
6.请求一个操作的对象与知道怎么执行一个操作的对象分隔开

注意
敏捷开发原则:不要为代码添加基于猜测的,实际不需要的功能。如果不清楚一个系统是否需要命令模式看,一般就不要着急实现它,事实上,在需要的时候通过重构实现这个模式并不困难,只有在真正需要如撤销/恢复操作等功能时,把原来的代码重构为命令模式才有意义。

对于命令模式的理解还有欠缺之处,欢迎大家留言交流

猜你喜欢

转载自blog.csdn.net/lrtcsdn/article/details/84064140