美文网首页
接口回调

接口回调

作者: Amy木婉清 | 来源:发表于2021-05-08 14:37 被阅读0次

1.什么是回调?
一般来说,模块之间都存在一定的调用关系,从调用方式来看可以分为三类:
同步调用、异步调用、回调。
同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用。使内存中对应函数B的代码得以执行。
异步调用是一种类似消息或事件的机制解决了同步阻塞的问题,例如A通知B后各走各的路,互不影响。不用像同步调用那样,A通知B后,非得等B走完,A才继续走。
回调是一种双向的调用模式,也就是说,被调用的接口被调用时也会调用对方的接口,例如A要调用B,B在执行完又要调用A。


image.png

2.回调的用途
回调一般用于基层协作,上层将本层函数安装在下层,这个函数就是回调,而下层在一定条件下触发回调。例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,还在分层的数据通信中很普遍。
示例:
实现步骤:
1、创建一个回调接口。
2、创建一个回调对象实现回调接口。
3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用会死啊哦对象的某方法。
代码示例:
实例:Boss通知员工做事情,员工完成任务之后告诉Boss完成情况。

说明: Callback:回调接口。Boss:回调对象。Employee:控制器对象。

1、创建一个回调接口

public interface Callback {
    public void yes();
    public void no();
}

2、创建一个回调对象实现回调接口

//  Boss需要实现回调的接口
public class Boss implements Callback{
//  传入一个员工对象
    private Employee employee;
    public Boss(Employee employee) {
        this.employee = employee;
    }
    
//  告诉员工要做什么事情
    public void doEvent(String event) {
        System.out.println("Boss:"+event);
//      将当前对象传给员工,员工才可以回调
        employee.doSomething(this, event);
    }
    
//  员工完成事情后回调的方法
    @Override
    public void yes() {
        System.out.println("Boss:任务完成得很不错,下个月给你涨工资");
    }
    @Override
    public void no() {
        System.out.println("Boss:任务没完成,好好反思一下");
    }
    
}

3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法

public class Employee {
    public Employee(){}
 
//  完成boss交代的事情,回调接口作为参数穿过来
    public void doSomething(Callback callback, String event) {
        String flag=null;
        System.out.println("Employee:正在做:"+event);
        
//      根据完成情况通知Boss,即接口回调
        System.out.println("Employee:完成了任务!");
        flag="完成";
        if(flag.equals("完成")){
            callback.yes();
        }
        
        System.out.println("Employee:未完成任务!");
        flag="未完成";
        if(flag.equals("未完成")){
            callback.no();
        }
        
    }
}

4、测试:

public class Test {
    public static void main(String[] args) {
        Employee employee=new Employee();
        Boss boss = new Boss(employee);
        boss.doEvent("写hello world!");
    }
}

结果:


image.png

相关文章

  • Kotlin使用接口回调

    1.Java中的接口回调实现(支持多方法回调) 声明回调接口,初始化接口 使用接口回调(无参数) 使用接口回调(带...

  • Java回调深入理解

    1 接口回调 1.1 接口回调概念 什么是接口回调接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声...

  • Android Module之间数据传递

    方法一:使用接口回调 (1)在子module创建回调接口(参数可变) (2)在子module 实现类设置接口回调 ...

  • Android接口回调

    之前对接口回调一直有点模糊,会写但是理解的不透彻,今天记录一下自己理解的回调是什么。 接口回调是什么? 接口回调是...

  • Kotlin简单回调接口(lambda实现)

    注:适用于回调接口单个方法 1.方法无参无返回值回调 (1)声明回调接口,以及初始化接口 (2)接口方法的调用 (...

  • kotlinInterface

    注:适用于回调接口单个方法 1.方法无参无返回值回调 (1)声明回调接口,以及初始化接口 2.方法有参无返回值回调...

  • Fragment向Activity传递值

    一.Fragment向Activity传值的步骤 接口回调传递(5部曲) fragment中准备回调接口 接口中...

  • 接口回调

    实现fragment往Activity传值 接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接...

  • 接口回调

    接口A: 类B: 类C:

  • 接口回调

    接口回调,其实就是将接口里面的内容(可能是接口里面数据需要传递),传递到实现这个接口的类中,看下面的是一个Asyn...

网友评论

      本文标题:接口回调

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