1. 程式人生 > >java中介面實現回撥方法

java中介面實現回撥方法

在學習過程中,看Java原始碼時,經常出現一個詞就是回撥方法,網上檢視別人解釋,五花八門,看得人云裡霧裡,通過揣摩理解,在這裡我來說一說我的理解。
一、回撥方法概念
舉例說明
這裡寫圖片描述
圖中是這麼個場景,類A實現時要呼叫類B的b(),這時我們會怎麼做呢,我們直接在類A中例項化一個類B物件b,然後呼叫b.b(),我們叫這種呼叫為直接呼叫;但是此時類B中b()的實現,要依賴於類A的a()方法,我們叫這個方法a()為回撥方法,這就是回撥方法概念。
我們發現這種2個類之間相互呼叫,這種設計不利於程式碼維護,因為改了類A的程式碼,可能就要改類B程式碼,相反也一樣。有沒有方法避免這種情況呢?使A、B之間相對獨立,Java中可以採用介面實現回撥,我們來看一看.
二、介面實現回撥
介面定義

public interface CallBack {
    public void a();
}

類A定義

public class A implements CallBack {
    //持有B的引用
    public B bb;
    @Override
    public void a() {
        System.out.print("Hello my name is A");
    }
}

類B定義

public class B {
    public CallBack callBack;
    public B(CallBack callBack){
        this
.callBack = callBack; } public void b(){ //只關注介面,與實現介面的類A隔離、解耦,提高程式碼靈活性,可複用性, callBack.a(); } }

我們來測試下

public class Test{
    public static void main(String[] args){
        A a = new A();
        B b = new B(a);
        a.bb = b;
        a.bb.b();
    }
}

三、結論
使用介面實現回撥的方式可以使各模組實現解耦,提高程式碼的靈活性與可複用性。