当前位置:网站首页 > 技术博客 > 正文

命令模式有哪些角色



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

命令模式的英文定义是:

Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.

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

简单来说,命令模式就是将发送者、接收者和调用命令封装成对象,客户端调用的时候可以选择不同的对象,从而实现发送者和接收者的完全解耦。

命令模式包含如下角色:

角色关系类图如下:

3.1 接收者

3.2 命令对象

3.3 请求者

3.4 客户端

通过代码我们可以看到,命令模式把一条命令分为四步,先定义接收者,再创建执行命令对象,再创建请求者,最后执行命令方法。它的耦合度要比把所有的操作都封装到一个类中要低的多,而这也正是命令模式的精髓所在:把命令的调用者与执行者分开,使双方不必关心对方是如何操作的。

命令模式的优点:

命令模式的缺点:

命令模式的典型应用场景如下:

以生活中的看电视为例,其中遥控器就是命令发送者,电视就是请求接收者,分别对应:开机、关机、切换频道三个命令,实现代码如下。

6.1 定义遥控功能(命令接口和实现类)

6.2 接收者(执行命令)

6.3 执行者(发起执行命令对象)

6.4 客户端(调用)

命令模式是通过封装命令类来实现解耦调用者(发送命令)和接收者(执行命令),它的优点是可扩展性好,缺点是需要为不同的命令需要制定单独的命令类。你还知道哪些命令模式在生活中的例子呢?

若将上面代码改为使用循环的方式,又该如何修改呢?大家可以思考一下。

  • 上一篇: c++fstream用法
  • 下一篇: 如何求nextval数组
  • 版权声明


    相关文章:

  • c++fstream用法2025-08-22 15:01:02
  • 小程序源码是什么意思2025-08-22 15:01:02
  • 什么是防抖函数2025-08-22 15:01:02
  • 方法派在线观看完整版全集高清2025-08-22 15:01:02
  • lspci命令查看网卡2025-08-22 15:01:02
  • 如何求nextval数组2025-08-22 15:01:02
  • mongodb正则匹配查询2025-08-22 15:01:02
  • offsetfromutc2025-08-22 15:01:02
  • jrebel插件下载2025-08-22 15:01:02
  • 循环队列详解2025-08-22 15:01:02