经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » 设计模式 » 查看文章
行为型模式之命令模式
来源:cnblogs  作者:yewen1234  时间:2018/12/6 10:23:58  对本文有异议

命令模式(Command Pattern)又称为行动(Action)模式或交易(Transaction)模式。

定义:

  • 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或记录请求日志,可以提供命令的撤销和恢复功能。

命令模式类图如下所示。

命令模式中有如下4个角色。

  • 命令(Command)角色:声明一个所有具体命令类的抽象接口,定义需要执行的命令。
  • 具体命令(Concrete Command)角色:定义一个接收者和行为之间的弱耦合,实现命令方法,并调用接收者的相应操作。
  • 调用者(Invoker)角色:负责调用命令对象执行请求。
  • 接收者(Receiver)角色:负责具体实施和执行一个请求。

 Command.java

  1. public interface Command {
  2. // 执行命令的方法
  3. public void execute();
  4. }

ConcreteCommand.java

  1. public class ConcreteCommand implements Command{
  2. private Receiver receiver;
  3. public ConcreteCommand(Receiver receiver) {
  4. this.receiver = receiver;
  5. }
  6. // 执行方法
  7. @Override
  8. public void execute() {
  9. this.receiver.action();
  10. }
  11. }

Receiver.java

  1. public class Receiver {
  2. // 行动方法
  3. public void action() {
  4. System.out.println("执行动作");
  5. }
  6. }

Invoker.java

  1. public class Invoker {
  2. private Command command;
  3. // 接收命令
  4. protected void setCommand(Command command) {
  5. this.command = command;
  6. }
  7. // 执行命令
  8. public void action() {
  9. this.command.execute();
  10. }
  11. }

Client.java

  1. public class Client {
  2. public static void main(String[] args) {
  3. // 调用者
  4. Invoker invoker = new Invoker();
  5. // 接收者
  6. Receiver receiver = new Receiver();
  7. // 定义一个发送给接收者的命令
  8. Command command = new ConcreteCommand(receiver);
  9. // 执行
  10. invoker.setCommand(command);
  11. invoker.action();
  12. }
  13. }

优点:

  • 类间解绑。调用者角色与接收者角色之间没有任何依赖,调用者实现功能时只需调用Command中的execute()方法即可,不需要了解是哪个接收者执行。
  • 可扩展性。Command的子类可以非常容易地扩展,而调用者Invoker和高层次的模块Client不产生严重的代码耦合。
  • 命令模式结合其他模式会更优秀。命令模式可以结合责任链模式,实现命令族解析任务,结合模板实现方法,则可以减少Command子类的膨胀问题。

缺点:

  • 可能会导致系统中出现过多的具体命令类,因此需要在项目中慎重考虑使用。

应用场景:

  • 只要你认为是命令的地方就可以采用命令模式,例如,在GUI开发中,一个按钮的点击
    是一个命令,可以采用命令模式;模拟DOS命令的时候,当然也要采用命令模式;触发-反
    馈机制的处理等。

摘自:

青岛东合信息技术有限公司 . 设计模式(Java版) .  电子工业出版社,2012,142-146.

秦小波 . 设计模式之禅 . 机械工业出版社, 2014

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号