回调函数的通俗解释

(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也是一种提高。

 

posted on 2015-04-14 15:32  大罗二罗  阅读(638)  评论(0)    收藏  举报