三、经典模式(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();
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值