軟體模組之間總是存在著一定的介面,從調用方式上,可以把他們分為三類:同步調用、回調和非同步呼叫。
同步調用:一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;
回 調:一種雙向調用模式,也就是說,被呼叫者在介面被調用時也會調用對方的介面;
非同步呼叫:一種類似訊息或事件的機制,不過它的調用方向剛好相反,介面的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的介面)。
回調和非同步呼叫的關係非常緊密:使用回調來實現非同步訊息的註冊,通過非同步呼叫來實現訊息的通知。
========================================================
用Java裡的例子:
package callbackexample; public interface ICallBack { //需要回調的方法 public void postExec(); }
另外的一個類:
package callbackexample; public class FooBar { //組合彙總原則 private ICallBack callBack; public void setCallBack(ICallBack callBack) { this.callBack = callBack; doSth(); } public void doSth() { callBack.postExec(); } }
第二個類在測試類別裡面,是一個匿名類:
package callbackexample; public class Test { public static void main(String[] args) { FooBar foo = new FooBar(); foo.setCallBack(new ICallBack() { public void postExec() { System.out.println("在Test類中實現但不能被Test的對象引用,而由FooBar對象調用"); } }); } }
上訴的代碼:
1.兩個類:匿名類和FooBar
2.匿名類實現介面ICallBack(在test測試的main方法中用匿名類的形式實現)
3.FooBar 擁有一個參數為ICallBack介面類型的函數setCallBack(ICallBack o)
4.匿名類運行時調用FooBar中setCallBack函數,以自身傳入參數
5.FooBar已取得匿名類,就可以隨時回調匿名類中所實現的ICallBack介面中的方法
==================================
1。首先回調方法的概念與“構造方法”的概念是不一樣的,它不是指java中某個具有特殊意義或用途的方法。
2。稱它為方法的“回調”更恰當一些,它是指方法的一種調用方式。任何一個被“回調”的方法,皆可稱之為“回調方法”
3。方法的回調通常發生在“java介面”和“抽象類別”的使用過程中。
假設有介面名為 ICallBack 其中有方法名為postExec()
有類Myclass 實現了該介面,也就是一定實現了postExec()這個方法。現在有另一個類FooBar它有個方法 setCallBack(ICallBack callBack) ,並且setCallBack方法調用了callBack的postExec()方法。
如果現在,我們使用一個Myclass 的執行個體myClass,將它作為參數帶入到setCallBack(ICallBack callBack)方法中,我們就說setCallBack(ICallBack callBack)方法回調了myClass的postExec()方法。
中國最新款女鞋網,來自淘寶天貓月銷量上千的女鞋喲:
www.taotuike.cn