1 回调管理器
利用上面的技术可以实现一个回调管理器,使用这个东西可以使互相关联的模块解耦。
1.1 代码示例
typedef CCallbackManager<std::string> CallbackManager;
CallbackManager manager;
void Test0()
{
int a = 9;
}
void Test1(int i)
{
int a = 9;
}
Struct xyz
{
Int Menberfunc(bool);
};
Xyz *p = new xyz;
manager.RegisterCallback("msg0",CreateCallback(Test0));
manager.RegisterCallback("msg1",CreateCallback(Test1));
manager.RegisterCallback("msg2",CreateCallback(p,&Xyz ::Menberfunc));
manager.ExecCallback("msg0");
manager.ExecCallback("msg1",3);
manager.ExecCallback("msg2",false);
1.2 实现
实现一个回调管理器很简单,但是如果考虑到void*类型的回调就相当的麻烦,再考虑到回调的执行线