C#中存在着事件和委托的用法,广泛的应用在Form的编码中。很方便,MFC就不是这样的机制。
本文将描述委托的一种实现方法。Boost中也有委托的实现,各位也可以去学习。
还是从代码开始学习
代码1: IEventHandle接口
看到这个接口是不是很熟悉?有没有想起是哪种设计模式?对了,Observer,观察-订阅模式。很明显这个接口就是IObserver观察者。
代码2:IEventHandle接口的具体类
此具体类负责在事件触发时执行动作,对应到Observer模式中,就是他订阅了消息,有了消息告诉他,他会做些事情。
代码3:Event类
这个类就是模式中的被观察者,他负责添加各种订阅了他消息的观察者,并在消息发生时,通知他们。
代码4: 事件管理类
其实这个类在此模式中可有可无,他只是把各种消息分类存放了起来,便于调用。
代码5:事件的行为函数绑定
属于内部类,对外可以不暴露,EventDelegate依赖于他。注册执行事件响应的函数分为两种,一种是回调函数,另一种是类成员函数。如果为了简单只实现一种响应函数时,可以不需要此类,直接在EventDelegate中实现此类功能即可。但不利于系统的扩展
代码6: 事件参数
我们之前学习的Observer中的Update是不带参数的,是一种简单表示,实际上带上参数不会有问题。EventArgs就是参数
代码7: 其他辅助代码
将事件进行了分类
代码8:使用方式
图1: 类图
明白了吗?
明白了吗?欢迎各位和我交流。