美文网首页
Callback机制

Callback机制

作者: perfect_jimmy | 来源:发表于2017-02-03 16:23 被阅读71次

模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用
1.同步调用是一种阻塞式调用,也是我们在写程序中经常使用的
2.回调是一种双向的调用模式,也就是说,被调用的接口被调用时也会调用对方的接口
3.异步调用是一种类似消息或事件的机制,解决了同步阻塞的问题
举例来讲:A通知B后,他们各走各的路,互不影响,不用像同步调用那样,A通知B后,非得等到B走完后,A才继续走

Paste_Image.png

同步和异步机制的出现不必多说,大家心知肚明,那回调机制为什么会出现呢?在我们现实生活中,有如下这样场景:有一位老板很忙,他没有时间盯着员工干活,然后他告诉自己的雇员,干完当前这些事情后,告诉他干活的结果。这个例子其实是一个回调+异步的例子,再举一个例子,A程序员写了一段程序a,其中预留了回调函数接口,并封装好了该程序,程序员B让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法,到这里你可能似懂非懂了,后面会继续说明回调的出现原因。接下来我们把上面例子变成代码,看到网上很多人最后搞混了异步和回调,因此例子中不加入异步调用。(注意:回调可不是解决什么调用时间过长问题,那是异步!)

首先创建一个接口:老板需要在员工干完活之后被通知到

public interface CallBackInterface {
    public void solve(String str);
}

创建回调对象:老板,因为员工干完活后要电话老板告诉他活已经干完

/**
 * 老板是作为上层应用身份出现的,下层应用(员工)是不知道 有哪些方法,因此他想被下层应用(员工)调用必须实现此接口 
 */
public class Boss implements CallBackInterface{
    private Employee employee;
    public Boss(Employee employee) {
        this.employee = employee;
    }
    //boss吩咐员工做事
    public void tellToDo(String str){
        System.out.println("boss吩咐员工"+str);
        employee.doThing(this, str);
    }
    //员工做完之后,回调此方法告诉boss事情已近刚做完
    @Override
    public void solve(String str) {
        System.out.println("员工做完之后,回调此方法告诉Boss");
    }
}

创建控制对象:员工,他必须持有老板的地址(回调接口),即使老板换了一茬又一茬,办公室不变,总能找到对应的老板

public class Employee{
    public void doThing(CallBackInterface callBackInterface,String str){
        System.out.println("员工干活:"+str+"干完之后,通知Boss做好了");
        callBackInterface.solve(str);
    }
}

代码测试

public class TestCallBack {
    public static void main(String[] args) {
        Employee employee = new Employee();
        Boss boss = new Boss(employee);
        boss.tellToDo("拖地");
    }
}

执行结果

boss吩咐员工拖地
员工干活:拖地干完之后,通知Boss做好了
员工做完之后,回调此方法告诉Boss

相关文章

  • Callback机制

    模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用1.同步调用是一种阻塞式调用,...

  • 回调callback

    title: 回调callback 参考: JAVA回调机制(CallBack)详解一个经典例子让你彻彻底底理解j...

  • 使用Hibernate 监听数据库变化

    本文将简单介绍hibernate的listener和callback机制,对于单JVM程序来说这种机制非常的有用,...

  • Java回调(callback)机制

    回调的核心:回调方将本身即 this 传递给调用方,这样调用方就可以在调用完毕之后告诉回调方想要知道的信息。 一、...

  • 消息机制,内存管理,类加载

    垃圾回收机制 1.引用计数器 消息机制 1.callback interface 接口回调不跨线程,也不跨进程,常...

  • 9.3 集群稳定之路(《深入浅出nodejs》 笔记)

    父子进程通过send()和on('message',callback)分别进行消息的发送和接收处理实现通信机制 自...

  • ES6 Promise

    问题 JavaScript的Callback机制深入人心。而ECMAScript的世界同样充斥的各种异步操作(异步...

  • 无埋点README

    无埋点编码规范 无埋点方案基于窗口回调(Window.Callback)机制。BaseActivity中集成了自动...

  • RedisTemplate大量使用的callback机制

    假如要让你封装jedis以便让外界调用你大概率会像下面方法一样实现。 上面的这段代码违反了DRY原则,两个方法ge...

  • 转载---Java 回调机制 详解

    原文连接 来自 Bro_超 序言   最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,...

网友评论

      本文标题:Callback机制

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