天天看點

Java設計模式(二)回調模式

在學習Java的路上很早很早就接觸了回調,比如:JFrame的鍵盤事件,JFrame控件的點選事件,線程池執行之前的方法beforeExecute與執行之後的方法 afterExecute,線程的Run方法其原理就是使用了回調。之前一直沒有研究過其原理,在這裡學習一下回調模式,也友善了解事件監聽模式和觀察者模式。

回調模式

在計算機程式設計中,回調函數,或簡稱回調,是指通過函數參數傳遞到其它代碼的,某一塊可執行代碼的引用。這一設計允許了底層代碼調用在高層定義的子程式
Java設計模式(二)回調模式

可能會有這樣一個需求,某開發者想線上程執行之後做一些事情,你可能想到的方法就是線上程的run方法體内做這些操作,這樣固然能實作,可是卻使得各種業務耦合在一起。最好的解決方法就是使用回調模式。

首先定義回調接口

public interface Callback {
    void call();
}      

定義一個抽象類​

​ThreadHolder​

​​,提供了兩個​

​run​

​方法,一個可以傳遞回調參數的方法,一個無參方法

abstract class ThreadHolder {

    public final void run(Callback callback) {
        run();
        if (callback != null) {
            callback.call();
        }
    }

    public abstract void run();

}      

然後實作一個簡單的線程任務,繼承​

​ThreadHolder​

​​ 并重寫​

​run​

​方法

class SimpleThread extends ThreadHolder {

    @Override
    public void run() {
        System.out.println("做一些事情。。。");
    }
}      

測試

public class CallBackTest {

    public static void main(String[] args) {

        Callback callback = () -> System.out.println("事情做完了,我要做其它事情了");

        SimpleThread simpleThread = new SimpleThread();

        simpleThread.run(callback);

    }


}      
做一些事情。。。
事情做完了,我要做其它事情了      

繼續閱讀