回调

作者: 是夏莞也是CiCi | 来源:发表于2017-07-27 16:32 被阅读21次

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

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

    相关文章

      网友评论

          本文标题:回调

          本文链接:https://www.haomeiwen.com/subject/bsozkxtx.html