如上一篇文章所說,從調用方式上看,能夠分爲三類同步調用、異步調用和回調。回調是一種雙向的調用模式,也就是說,被調用的接口被調用時也會調用對方的接口,例如A要調用B,B在執行完又要調用A。html
回調通常用於層間協做,上層將本層函數安裝在下層,這個函數就是回調,而下層在必定條件下觸發回調。例如做爲一個驅動,是一個底層,他在收到一個數據時,除了完成本層的處理工做外,還將進行回調,將這個數據交給上層應用層來作進一步處理,這在分層的數據通訊中很廣泛。(表示沒怎麼理解)java
原理:首先建立一個回調對象,而後再建立一個控制器對象,將回調對象須要被調用的方法告訴控制器對象,控制器對象負責檢查某個場景是否出現或某個條件是否知足,當知足時,自動調用回調對象的方法。異步
例如老闆A對員工B說,我如今交給你一個任務,而且我把個人電話號碼給你,你一旦完成任務就給我打電話。函數
詳細的代碼以下:測試
一、建立一個回調接口
public interface CallBack
{this
public void doEvent();
}
二、建立回調接口的實現類,此例中,員工幹完活後還要幹什麼事情是老闆說了算的。
public class Boss implements CallBack
{code
public void doEvent() { System.out.println("打電話給老闆,告知已經完成工做了"); }
}
三、建立控制類,也就是本例中的員工對象,他要持有老闆的地址(即回調接口)
public class Employee
{htm
CallBack callBack; public Employee(CallBack callBack) { this.callBack=callBack; } public void doWork() { System.out.println("玩命幹活中...."); callBack.doEvent(); }
}
四、測試類
public class TestMain
{對象
public static void main(String[] args) { //建立控制器對象,將提供給他的回調對象傳入 Employee employee=new Employee(new Boss()); //啓動控制器對象運行 employee.doWork(); }
}接口