设计模式(七)命令模式-封装调用

2019-06-29  本文已影响0人  天色将变
定义

命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

解决的问题

将“动作的请求者”从动作的执行者“对象中解耦。
归根结底:在做设计,写框架代码的时候,尽量解耦,不要让框架代码与具体的内容代码绑定在一起。

类图
image.png
伪代码

命令对象接口(动作的执行者)

public interface Command{
  public void execute();// 都有一个统一的执行方法
}

客户端(动作的请求者)

public class Client{
  Command obj;
  public void setCommand(Command command){// 给一个命令对象,多态,不关心具体是哪个对象
    this.obj = command;
  }
  public void executeCommand(){// 执行,调用对象的方法,执行,不关心是哪个具体对象
    obj.execute();
  }
}

具体命令对象

public class Command1 implements Command{
   public void execute(){
      xxxx;
  }
}
public class Command2 implements Command{
   public void execute(){
      yyyy;
  }
}

示例

Client client = new Client();
client.setCommand(new Command1());
client.executeCommand();

client.setCommand(new Command2());
client.executeCommand();
一句话总结

给我一个对象,我来调用对象执行其方法。

临时产生的感想

设计框架,高度解耦,自由替换,使用多态

上一篇 下一篇

猜你喜欢

热点阅读