用实例解释"回调函数"
关于回调函数的定义,我相信想了解它的人都会去百度。我在第一次接触这个概念的时候也是这样,但依旧不能理解它。直到我真正用到的时候才忽然明白,原来回调函数是这个意思…
所以不去提及 “什么是回调函数?”等概念性的问题, 我这里用我实际遇到的一个实际例子来说一下我关于回调函数的理解。
说有这样一个例子:一个多标签页的窗口如下:
标签页的切换,是有专门的一个控制器根据定时器时间的设置来驱动,以实现按时自动切换。这时控制类必须要获取到的数据是:当前所在的标签页是哪一个? 它才能再次基础上将索引值加一,通知给窗口去切换。
但又有一个问题,这里程序用户有个小小的交互,那就是这个切换并非“全自动不可控”。
例:当前在“标签二”,我不想等定时挨个儿切换到“标签五”,而是鼠标直接点到“标签五”。
这时候就会产生索引不一致的问题,界面已经到“5”了,控制器中的索引值还在“2”。
怎么办呢?
我们可以在控制类中保留一个接口,当有鼠标点击切换标签页时,就立即通知控制器类调用这个接口,让它在这个接口的功能中更新标签页的索引。
这个例子中,控制器并不知道什么时候会发生鼠标点击,但它能知道当鼠标点击的时候要用到这个接口。
这时,你有没有发现这个接口其实就类似于一个回调函数。