作者:RednaxelaFX链接:https://www.zhihu.com/question/25504849/answer/130346710来源:知乎著作权归作者所有,转载请联系作者获得授权。“回调”(callback)这个概念本身跟Java没啥关系,是通用的。这个概念就是说:我写了这个答案,并且说我有空的时候再来更新(声明接受回调的事件)。下面评论区就有很多同学跑来说“如果有更新请告知”(注册回调)。然后我更新了回答,并且在评论区吼了声“我更新了”(事件发生了,调用回调)。然后之前“注册回调”的同学们就会收到通知说有更新了。很多学习Java的同学喜欢说设计模式。嗯。那宽泛地说,其实什么strategy**、template**、observer**、visitor**模式全部都是回调的不同应用。简单来说就是本来可以写死在一起的代码给拆开来,把让其中一坨保持原有的流程,并在流程中挖出一些空,让另一坨代码作为参数传进来在流程中合适的地方被调用。这个“合适的地方”可以是同步的也可以是异步的。例如说java.util.Collections.sort(List, Comparator),这个sort()方法就定义了一个流程实现排序,而具体的顺序则由传入的Comparator参数来确定——这就是一个同步回调。又例如说GUI编程中,一个按钮被点击之后要做点事情,大家可以注册个ActionListener上去监听点击事件,在点击时被调用,这就是一个异步回调。
网友评论