关于回调函数、信号槽(Qt)、命令模式

随笔记录下最近看得东西,做个笔记,以后再来斟酌斟酌。

首先是回调函数,一直不是很清楚这是干什么用的,看了很多文章,大概有些理解了。首先要用回调函数就要用到函数指针,这里我们把需要调用的函数定义为A,如果我们在函数B中想调用A,就把函数A的指针作为参数传递给B,这就实现了回调函数。那么我的疑问来了,如果B想调用A为什么要用参数穿进来,直接在B中调用函数的方法不就可以了?一时间比较钻牛角尖,不明来怎么回事。不过后来考虑到异步通信的情况,我们发送请求,可是并不知道对方什么时候会给我们回信,那也就没有办法直接使用我们的A函数了,但我们知道,我们发送那个请求的对象应该知道呀,这样我们把自己写好的函数A注册到,他的响应函数中也就实现了,当对方返回数据按照我们的方法处理。所以这应该才是回调函数的意义吧。


然后再来考虑下Qt的信号和槽,举个最简单的例子,我们按下一个按钮,这时候来执行我们定义的函数A,那我们还是不知道你究竟什么时候按下这个按钮啊,那么信号槽建立了联系,就可以实现了这个功能了,那么似乎可以有一种假设,那就是信号槽机制应就是采用的回调函数机制,其中的槽函数就是我们用来处理的函数A,信号则是调用我们函数B。

第三个就是设计模式中的命令模式了,这应该是回调函数在面向对象中的应用了,在这里命令者发出命令,就相当于我们按那个按钮,可是谁又知道他什么时候发命令呢,不过我们知道的是这个命令由接收这者来执行就对了,这个执行者是什么呢,不就是我们定义好的需要调用的函数A么,这么看来我们定义命令时候,就把执行者注册在了命令中,只不过这里时把接收者的对象传递进来的(毕竟这是面向对象嘛),这样的话我们的命令也就是那个B了,所以从本质上看命令模式也是和回调函数有异曲同工之效,这里面不考虑命令模式在面向对象方面的意义。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值