目录
一、实现说明
在C语言中,若需实现A模块满足某个条件,调用B模块、C模块、D模块...等模块中某个函数,一般采用如下写法(伪代码):
void AFunc()
{
if (condition1) {
BFunc();
}
if (condition2) {
CFunc();
}
if (condition3) {
DFunc();
}
}
可看出模块间偶尔较多,若B、C、D模块需要做什么修改,均需要嵌入的修改A模块,不满足C语言“对扩展开放,对修改关闭”的原理,因此采用了注册回调的方式,A模块提供注册回调的接口,B、C、D各模块在本模块内部注册回调,并根据需要进行对应的实现,在A模块满足某个条件时,依次调用各个回调函数即可。
如下所示,A模块提供回调注册接口,B、C、D模块通过注册接口注册自身的回调函数,当模块A满足某个条件,触发了FuncA时,在FuncA中依次调用其他模块注册的回调函数。