Java回調機制

1.  什麼是回調函數
    回調函數(callback Function),顧名思義,用於回調的函數。  回調函數只是一個功能片斷,由用戶按照回調函數調用約定來實現的一個函數。回調函數是一個工做流的一部分,由工做流來決定函數的調用(回調)時機。回調函數包含下面幾個特性: 
    一、屬於工做流的一個部分;
    二、必須按照工做流指定的調用約定來申明(定義);
    三、他的調用時機由工做流決定,回調函數的實現者不能直接調用回調函數來實現工做流的功能;    

2. 回調機制
    回調機制是一種常見的設計模型,他把工做流內的某個功能,按照約定的接口暴露給外部使用者,爲外部使用者提供數據,或要求外部使用者提供數據。java

=======================================================異步

java回調機制:函數

軟件模塊之間老是存在着必定的接口,從調用方式上,能夠把他們分爲三類:同步調用、回調和異步調用。post

 

同步調用:一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;測試

回      調:一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;this

異步調用:一種相似消息或事件的機制,不過它的調用方向恰好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的接口)。spa

回調和異步調用的關係很是緊密:使用回調來實現異步消息的註冊,經過異步調用來實現消息的通知。設計

========================================================code

 

用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()方法。 

==========================================================

相關文章
相關標籤/搜索