设计模式介绍之三:命令模式(command)

命令模式是一种将回调功能转化为面向对象形式的模式,它通过将函数封装为对象来减少代码耦合。在GUI编程中,如MFC和Qt,命令模式用于菜单响应和操作的可撤销性,提供更灵活的实现方式。该模式旨在参数化客户请求,支持请求队列、日志记录和取消操作。在GUI场景中,命令模式常用于响应不同按钮的点击事件,如打开新窗口、浏览器等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    命令(模式)的结构很简单,但对于消除代码间的耦合却有着重要的影响。

    在 C 语言中我们经常使用回调函数,而命令模式是回调( callback )的面向对象的替代物。从最直观的角度来看,命令模式就是一个函数对象:一个作为对象的函数。通过将函数封装为对象,就能够以参数的形式将其传递给其他函数或者对象,告诉他们在履行请求的过程中执行特定的操作。可以说,命令模式是携带行为信息的信使。

    命令模式对于构建 GUI 应用有特别重要的意义,比如菜单的响应,使用 MFC 时我们通过一系列的 on_command 宏来关联菜单操作,而如果采用命令模式和工厂模式,将可以得到更精巧的实现。

    意图

  • 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
    已知应用举例
  • Qt , QAction
    常见问题
  • Command 对象生命周期维护
    适用环境
  • 抽象出待执行的动作以参数化某对象。
  • 在不确定的时刻指定、排列和执行请求
  • 支持取消操作
  • 支持修改日志
  • 用构建在原语操作上的高层操作构造一个系统
  • 不关注怎样执行,只关注有对象可以接受执行请求
    命令模式实例1

class CommandObject
{
public:
    CommandObject(){}
    virtua
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

foruok

你可以选择打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值