事件和委托的C++实现

 C#中存在着事件和委托的用法,广泛的应用在Form的编码中。很方便,MFC就不是这样的机制。

本文将描述委托的一种实现方法。Boost中也有委托的实现,各位也可以去学习。

还是从代码开始学习

代码1: IEventHandle接口

 

看到这个接口是不是很熟悉?有没有想起是哪种设计模式?对了,Observer,观察-订阅模式。很明显这个接口就是IObserver观察者。

代码2:IEventHandle接口的具体类

此具体类负责在事件触发时执行动作,对应到Observer模式中,就是他订阅了消息,有了消息告诉他,他会做些事情。

代码3:Event类

这个类就是模式中的被观察者,他负责添加各种订阅了他消息的观察者,并在消息发生时,通知他们。

代码4: 事件管理类

其实这个类在此模式中可有可无,他只是把各种消息分类存放了起来,便于调用。

代码5:事件的行为函数绑定

属于内部类,对外可以不暴露,EventDelegate依赖于他。注册执行事件响应的函数分为两种,一种是回调函数,另一种是类成员函数。如果为了简单只实现一种响应函数时,可以不需要此类,直接在EventDelegate中实现此类功能即可。但不利于系统的扩展

代码6: 事件参数

我们之前学习的Observer中的Update是不带参数的,是一种简单表示,实际上带上参数不会有问题。EventArgs就是参数

代码7: 其他辅助代码

将事件进行了分类

代码8:使用方式

 图1: 类图

 

明白了吗?

明白了吗?欢迎各位和我交流。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值