java基礎之接口回調

1. 什麼是接口回調:我的理解是,在一個對象的方法參數中引用另一個實現了某個接口的對象的引用,且該引用爲接口引用(上轉型)

2. 爲什麼要用接口回調:我的理解是,解決業務、類與類或者模塊與模塊之間的協作問題

3. 怎麼用接口調用,code

import java.util.HashMap;
import java.util.Map;

interface CallBack {
    void invoke(Map<String, Object> mapData);
}

class Senior implements CallBack {

    private final JuniorType junior;

    public Senior(JuniorType junior) {
        this.junior = junior;
    }

    public void drive() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                junior.deal(Senior.this);
            }
        }).start();
    }

    @Override
    public void invoke(Map<String, Object> mapData) {
        System.out.println("上層模塊處理下層模塊傳上來的Map數據");
    }
}

interface JuniorType {
    void deal(CallBack callBack);
}

class Junior implements JuniorType {

    @Override
    public void deal(CallBack callBack) {
        System.out.println("下層模塊處理完自己的業務把得到的數據傳遞給上層...");
        // 模擬該方法處理自己業務時得到的Map數據
        Map<String, Object> map = new HashMap<>(1);
        callBack.invoke(map);
    }
}

public class CallbackTest {
    public static void main(String[] args) {
        Junior junior = new Junior();
        // 講下層調用類註冊到上層
        Senior senior = new Senior(junior);
        senior.drive();
    }
}

4. 接口回調和向上轉型的區別:我的理解是:本質是一樣,只不過涉及到接口實現時我們叫接口回調;涉及到類繼承時我們叫向上轉型。

最近在看CGLIB子類代理時涉及到的方法攔截器這個回調接口,進而想到了java中什麼是接口回調的概念。希望大家多多指正~~

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