java设计——接口回调

作者: 听风逝夜h | 来源:发表于2019-05-05 10:18 被阅读26次

一、什么是接口回调

网络上有很多关于接口回调技术的文章,但是看来看去,都是一些专业术语,这指针那指针的,初学者要看三四篇文章估计才能明白,今天我就用大白话给大家介绍什么是接口回调

如果你还不懂java接口,还是先去学习一下,回来再看我这篇文章.

回调:从字面意思上也应该很好理解,举一个栗子,我的老师交代给我一个任务,让我调查学生对哪个编程语言的兴趣最高,但是老师也不能一直等着我给她答案,毕竟老师也是很忙的,于是老师说:"你调查完后把文件发到我微信上".
这里的"发到我微信上"就可以看作一个回调,当我调查完成之后,将结果发往老师微信.完成一次任务.
接下来就看代码如何实现上诉"回调"

二、定义回调接口

接口如何定义?,以及接口内的方法如何定义?
从上述的案例可以看出,回调指的是"将结果发往老师微信",那好,我们就定义一个interface 叫做IResultCallback,里面有一个方法,叫做sendResult();但是光有一个方法貌似不够,既然是发,那么,发什么东西?当然是发学生对这个兴趣最高的语言了.那我们给sendResult方法加个参数sendResult(String language).Ok

public interface IResultCallback {
    void sendResult(String language);
}

三、定义处理者

回头在看上述案例,谁在调查?当然是我了,那就定义一个我,但是只有我还是不够的,你总的给我一个回调地址把吧让我知道我处理完后发给谁?
这里的IResultCallback就是上面定义的回调地址,
在Student的构造方法中,要求传入一个IResultCallback的实例,在java中,谁实现了它,就调用谁,那是不是要定义一个老师去实现这个接口,然后传给这个学生,当然

public class Student {
    /**
     * 回调接口
     */
    private IResultCallback mCallback;
    
    /**
     * 
     * @param mCallback 回调地址,当我处理完后,将结果发送到这个的接口实现类
     */
    public Student(IResultCallback mCallback) {
        super();
        this.mCallback = mCallback;
    }

    public void doTopLanguage() {
        try {
            Thread.sleep(2000);
            mCallback.sendResult("VB");//回调
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

四、定义老师

老师要做的事情就是交给学生任务,然后等待....等待...

public class Teacher implements IResultCallback{
    public Teacher() {
        /**
         * 这个老师一出生就要分配给学生任务
         */
        Student student =new Student(this);
        student.doTopLanguage();
    }

    @Override
    public void sendResult(String language) {
        System.out.println("老师:学生最喜欢的语言居然是: "+language +" !!!!");
        
    }

}

五、测试及结果

public class Main  {    
    public static void main(String[] args)  {
        new Teacher();
    }
}

//输出:
//老师:学生最喜欢的语言居然是: VB !!!!

嗯,是VB没错了

首先说明的是,在这个实例中,并没有说学生在做调查的时候,老师可以干其他的事情,因为没有在Student中开启一个新线程,怕初学者没学多线程,还不太明白.但是还是给出下面实例.

public class Teacher implements IResultCallback{
    public Teacher() {
        /**
         * 这个老师一出生就要分配给学生任务
         */
        Student student =new Student(this);
        student.doTopLanguage();
        System.out.println("老师:我去干其他事情了");
    }

    @Override
    public void sendResult(String language) {
        System.out.println("老师:学生最喜欢的语言居然是: "+language +" !!!!");
        
    }

}
public class Student {
    /**
     * 回调接口
     */
    private IResultCallback mCallback;
    
    /**
     * 
     * @param mCallback 回调地址,当我处理完后,将结果发送到这个的接口实现类
     */
    public Student(IResultCallback mCallback) {
        super();
        this.mCallback = mCallback;
    }

    public void doTopLanguage() {
        new Thread(new Runnable() {
            
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                    mCallback.sendResult("VB");//回调
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
        }).start();
    }
}
//输入:
//老师:我去干其他事情了
//老师:学生最喜欢的语言居然是: VB !!!!

相关文章

  • Kotlin使用接口回调

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

  • java设计——接口回调

    一、什么是接口回调 网络上有很多关于接口回调技术的文章,但是看来看去,都是一些专业术语,这指针那指针的,初学者要看...

  • 接口回调全面总结

    《Java2》接口回调 接口回调定义 接口和类一样,是Java中的一种数据类型,用接口声明的变量称之为接口变量 接...

  • java接口,接口回调

    0、 java 接口概念 一直对 java 接口概念比较模糊,因为平时的学习相对简单,没有用上,所以就很模糊。...

  • java接口回调机制

    转载的正文 地址--理解java接口回调机制

  • java接口回调

    java的接口回调原理网上已经有很多生动形象的例子说明了,在此总结一下个人的理解:类A调用类B的方法b(),类B再...

  • Java接口回调

    一个model是需要长时间获取的话 但是如果使用MVP的话,异步操作的逻辑应该放在P里面,别放V里面了

  • Java 接口回调

    个人理解:一个类A中的方法1调用类B中的方法2,类B中的方法2调用类A中的方法3 模拟这样一个场景:员工A完成星期...

  • JAVA接口回调

    百度百科定义: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数地址给另一个函数,当这个...

  • Dubbo Proxy 原理与实例

    Java代理 Java代理:通过反射和InvocationHandler回调接口实现 Proxy.newProxy...

网友评论

    本文标题:java设计——接口回调

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