C#语言中的委托模型封装了函数指针的用法,而事件模型又在委托的基础上实现了观察者模式。这些在程序开发中有着非常好的应用。C++语言本身没有为我们提供事件模型,如何在程序中实现自己的事件模型呢?本文将试着抛砖引玉……
首先,我们需要定义一个基本的事件模型,支持函数指针的注册和注销:
这个类还不能如我们想象的那样工作,因为它还不能触发事件。
为了触发事件,我们必须要知道函数的参数个数和类型,怎么办呢?(只有编译器能知道了)
没有关系,通常我们的事件处理模块的参数个数都是有限的几个,我们就提供0~2个参数的实现吧。
请看以下代码:
好了,如果你想实现更多参数的事件模型,不妨参考上述代码做一下变更即可。
下面我们就以PrintMessage来使用一下前面定义的事件模型:
编译执行上述代码,将输出结果:
Hello, world!