三、经典模式(14)命令模式

2021/6/14 10:51:12

本文主要是介绍三、经典模式(14)命令模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

命令模式

命名模式将请求发送者与请求接收者解耦,请求发送者通过命令对象来间接引用接收者,使得系统有更好的灵活性,可以在不修改现有的系统源代码的情况下让相同的发生者对应不同的接收者。相当与开关与电器的关系(空调、电风扇等等)
命令模式:将一个请求封装为一个对象,从而让你可以用不同的额请求对客户端进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。

命令模式有4种角色:
1.Command(抽象命令类):抽象命令类一般是抽象类和接口,在其中声明了用于执行的Execute()等方法,通过这些可以调用请求接收者的相关操作。
2.ConcreteCommand(具体命令类):它抽象命令类的子类,将接收者对象的动作绑定在其中,具体命令类在实现Execute()方法,将调用接收者对象的相关操作(Action)
3.Invoker(调用者):调用者即请求发送者,它通过命令对象来执行请求。
4.Receiver(接收者):接收者执行与请求相关的操作,具体实现对请求的业务处理。

抽象命令类:
abstract class Command
{
  public abstract void Execute();
}
具体命令类:
class ConcreteCommand:Command
{
   private Receiver receiver; //维持一个对请求接收者对象的引用
   public override void Execute()
   {
      receiver.Action();   //调用请求接收者的业务处理方法Action()
   }
}
请求接收者:
class Receiver
{
   public void Action()
   {
      //具体操作
   }
}
调用者:
class Invoker
{
  private Command command;
  //构造注入
  public Invoker(Command command)
  {
     this.commmand = command;
  }
  public Command Command
  {
     get{return command;}
     set(command = value;}
  }
  //业务方法,用于调用命令类的方法
  public void Call()
  {
    command.Execute();
  }
}


这篇关于三、经典模式(14)命令模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程