原味链接:认识回调 转载请注明出处~
回调是啥呢,首先想想为啥叫回调呢,哪回了?调啥了?中国汉字博大精深,如果一篇博客说了一堆blabla的但是你没有理解为啥叫回调,那算是白看了。
回调怎么用
先来看一下模板
- 首先,有一个接口
interface CallBack {
public void execute();
}
- 然后,要有类来实现这个接口
class A implements CallBack {
@override
public void execute(){
xxx...//想怎么实现就怎么实现好啦
}
}
- 再然后,还得有个类,这里面有个方法
b()
调用了刚才的execute()
方法,那当A中的一个指向b的引用调用b()的时候,是不是就有调用了A中的execute()
方法呀,这不是就回调了嘛~
class B {
CallBack callback; //有一个CallBack的引用
b(){
callback.execute(); //有一个方法是调用了接口的方法,那这个方法就被回调了吗,就叫回调方法了
}
}
回调有啥用
举个例子,我们向外提供某个服务b,有好多业务方都需要调用我们的服务,调用后以某种方式展示在他们的业务上。那这个时候我们把我们服务的源代码拷给他们挨个提供服务吗?大可不必,我们提供一个方法b(),b()调用回调方法,当业务方调用我们服务的b()的时候,我们的方法执行后直接以回调的形式将结果反馈给业务方。
举个具体的例子,小红很有钱,买了个计算器,可以提供计算服务caculate()。不想自己算的小明想调用这个方法来写作业work(),糊涂的老奶奶也想调用这个方法来算账work(),这样只要小明和老奶奶都调用calculate()方法,小红的caculate()调用小明和老奶奶统一使用接口的work()方法,小红可以给多个不同需求的业务提供服务了。
那为啥不直接调用小红的calculate()方法,得到一个返回值不就行了吗?那小明和老奶奶还要了解小红的这个方法调用返回的结果都是什么,怎么处理。实际中了解另一个业务的参数返回值啊这些都比较麻烦,回调做到了真正的解耦。只要小明和老奶奶按照统一接口定义方法的格式定义回调方法,那小红就可以提供一站式服务。(个人理解)
如果你木有看懂这篇文章,可以去看Bro__超JAVA回调机制(CallBack)详解,感觉讲的很清晰~ 强烈推荐~
参考文章
Bro__超JAVA回调机制(CallBack)详解
That's all,enjoy it~
欢迎访问博主个人博客:http://kongdehui.com/ ~~~
网友评论