首先声明,回调函数并不是一种特殊的函数结构,而指的是利用函数指针来回调写好的函数的一种使用方法。
1.回调函数是什么
其具体实现是使用者自己定义一个函数,并且使用者自己实现这个函数的程序内容,然后将自己的函数作为参数传入别人的函数中,由别人的系统函数在运行时调用。简单地说也就是—-由别人的函数运行期间来回调你实现的函数。别人并不关心你的函数的具体实现,只知道在什么时候调用你的函数;而你知道你的函数的具体实现,却不知道在什么时候调用你的函数。
回调函数解决了面向对象设计的封装性:模块间要解耦,模块内要内聚。
而一旦将函数作为参数传递给另一函数,则说明其存在变化的可能性(可以实现动态响应的功能)。
回调函数解决的需求:你想让别人的函数来执行你的函数,而别人的函数还不能动。
注意这里的“你”具体指的是谁:
1.如果你是SDK(系统、底层)开发人员,那么应该是在你的代码里面给比人留下回调函数,让别人在回调里实现他们想要的功能;
2.如果你是上层开发人员,那么你就需要自己写好一个函数(按照底层规定好的函数名和参数),将其作为函数指针传入中间函数,在别人的代码里实现回调。
2.回调函数的实现过程
参考知乎大神,回调函数其实包含三部分:
- 1.起始函数—-中间函数的调用者,一般是程序的主函数。
- 2.中间函数—-位于底层,由此调用回调函数。
- 3.回调函数—-和起始函数同一级,由中间函数调用。