回呼函數就是那些自己寫的,但是不是自己來調,而是給別人來掉的函數。
訊息響應函數就可以看成是回呼函數,因為是讓系統在合適的時候去調用。這不過訊息響應函數就是為了處理訊息的,所以就拿出來單做一類了。其實本質上就是回呼函數。
但是回呼函數不是只有訊息響應函數一種,比如在核心編程中,驅動程式就要提供一些回呼函數,當一個裝置的資料讀寫完成後,讓系統調用這些回呼函數來執行一些後續工作。
回呼函數賦予程式員這樣一種能力,讓自己編寫的代碼能夠跳出正常的程式控制流程,適應具體的運行環境在正確的時間執行。
回呼函數總結
別人給回調的定義:
所謂回調,就是對象A調用另一對象B中的某個方法b,然後B又在某個時候反過來調用A中的某個函數c,對於B來說,這個c便叫做回呼函數。
回調是一種雙向調用模式,也就是說,被呼叫者在介面被調用時也會調用對方的介面.
我的理解, 和一般的類之間的組合類別似。就只是A對象調用B對象的一個方法b。只不過方法b是抽象的,是後期綁定的。
java回調代碼。
1,定義回調介面。
package com.smart; /** * 定義回調介面 */ public interface CallBack { void execute(); } package com.smart; /** * 定義回調介面 */ public interface CallBack { void execute(); } package com.smart; /** * 工具類 */ public class Tools { public void test(CallBack callBack){ long begin = System.currentTimeMillis(); //測試起始時間 callBack.execute();///進行回調操作 long end = System.currentTimeMillis(); //測試結束時間 System.out.println("[use time]:" + (end - begin)); //列印使用時間 } public static void main(String[] args){ Tools tools = new Tools(); tools.test(new CallBack(){ public void execute() { //A.method(); 測試類別A的某個方法執行的時間 //B.method(); 測試類別B的某個方式執行的時間 System.out.print("回調" ); } }); } } package com.smart; /** * 工具類 */ public class Tools { public void test(CallBack callBack){ long begin = System.currentTimeMillis();//測試起始時間 callBack.execute();///進行回調操作 long end = System.currentTimeMillis();//測試結束時間 System.out.println("[use time]:" + (end - begin));//列印使用時間 } public static void main(String[] args){ Tools tools = new Tools(); tools.test(new CallBack(){ public void execute() { //A.method(); 測試類別A的某個方法執行的時間 //B.method(); 測試類別B的某個方式執行的時間 System.out.print("回調"); } }); } } 優點:我個人認為優點主要是將代碼中變與不變的部分相分離,從而大大提高了程式的重用性和擴充性。