回调


原味链接:认识回调 转载请注明出处~

回调是啥呢,首先想想为啥叫回调呢,哪回了?调啥了?中国汉字博大精深,如果一篇博客说了一堆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/ ~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容