最简单的回调

前言

这里展示回调从无到有的过程,看完就能明白为什么会有回调的存在。

(一)A正常工作

(1)Main类

public class Main {
    public static void main(String []args){
        A a = new A();
        a.Work();
    }
}

(2)A类

public class A {
    public void Work(){
        System.out.println("A类在工作...");
    }
}

(3)执行结果
在这里插入图片描述

(2)A遇到了麻烦

(1)原本A在正常工作,然而现在遇到了点麻烦,但是A工作没完成,走不开。此时委托B帮忙跑腿处理下

(2)B类

public class B {
    public void Work(){
        System.out.println("B正在帮忙处理...");
    }
}

(3)修改A类,请求B类帮忙

public class A {
    public void Work(){
        System.out.println("A类在工作...");
        System.out.println("此时需要B类帮忙处理其他事情...");
        //开启线程让B帮忙
        new Thread(new Runnable() {
            @Override
            public void run() {
                B b = new B();
                b.Work();
            }
        }).start();
        System.out.println("已经通知B帮忙了...A又继续工作");
    }
}

(4)执行结果
在这里插入图片描述

(三)A想知道B把事情处理完了没有

(1)现在的情况是,A委托B帮忙处理事情,B也确实是去处理了,可是B走后就了无音讯了。事情处没处理完A也不知情。所以A希望当B把事情处理完毕后能通知下A,此时就用到了回调。

(2)添加回调接口

public interface CallBack {
    public void callBack(String rs);
}

(3)修改A类

public class A implements CallBack{
    public void Work(){
        System.out.println("A在工作...");
        System.out.println("此时需要B帮忙处理其他事情...");
        //开启线程让B帮忙
        new Thread(new Runnable() {
            @Override
            public void run() {
                B b = new B(new A());
                b.Work();
            }
        }).start();
        System.out.println("已经通知B帮忙了...A又继续工作");
        System.out.println("此时A想知道委托B的事情处理完没有...");
    }

    @Override
    public void callBack(String rs) {
        System.out.println(rs);
    }
}

(4)修改B类

public class B {

    private A a;

    public B(A a) {
        this.a = a;
    }

    public void Work(){
        System.out.println("B正在帮忙处理...");
        a.callBack("B通知A:已经处理完你的事情了");
    }
}

总结

看到有句话讲的很精辟。

回调要求的是任务完成后,被调用者主动回调调用者的接口

这句话原文在:https://www.cnblogs.com/xll1025/p/10665282.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章