最簡單的回調

前言

這裏展示回調從無到有的過程,看完就能明白爲什麼會有回調的存在。

(一)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

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