回调函数的通俗解释
(1)为什么要用回调函数,或者为什么要用委托?
我的理解是:这涉及到两个程序模块间的交互,比如A程序需要提供一个功能给B程序用,比如这个功能是吃完饭后做一些事情(功能:吃完饭→做事),但是具体干什么我不知道,是去散步还是去喝酒,谁知道呢,那么怎么办呢?这时候就要用到回调函数,A程序可以把“做事”写成一个回调函数,回调函数指定一个函数指针或者接口。这样的话,A不具体去指定B去干什么,而是预留一个接口给B,这样B在自己的程序里写好“做事”的具体内容,然后调用A预留给B的那个回调函数,由B自己来决定到底做什么事情。
(2)回调函数怎么实现:这里引用一下灵魂大侠的作品:http://blog.csdn.net/callmeback/article/details/4242260,这里面有一个例子很不错,我加了一些注释:
#include <stdio.h> void printWelcome(int len)//B做的事情1 { printf("欢迎欢迎 -- %d/n", len); } void printGoodbye(int len)//B做的事情2 { printf("送客送客 -- %d/n", len); } void callback(int times, void (* print)(int))//A提供给B调用的回调函数,第二个参数是函数指针,供B指定具体做的事情,而不是由A来亲自实现 { int i; for (i = 0; i < times; ++i) { print(i); } printf("/n我不知道你是迎客还是送客!/n/n"); } void main(void)//测试 { callback(10, printWelcome); callback(10, printGoodbye); printWelcome(5); }
我个人感觉回调函数的设计还有一种方法论的意义在里面:善于授权,工作才会更高效合理。如果A是领导,A把具体做的事情交给B来决定,相当于授权更熟悉具体业务的B来做具体工作,这样A解放了自己,同时对B也是一种提高。
浙公网安备 33010602011771号