天天看點

Java:回調機制

1.  什麼是回調函數

    回調函數(callback Function),顧名思義,用于回調的函數。  回調函數隻是一個功能片段,由使用者按照回調函數調用約定來實作的一個函數。回調函數是一個工作流的一部分,由工作流來決定函數的調用(回調)時機。回調函數包含下面幾個特性: 

    1、屬于工作流的一個部分;

    2、必須按照工作流指定的調用約定來申明(定義);

    3、他的調用時機由工作流決定,回調函數的實作者不能直接調用回調函數來實作工作流的功能;    

2. 回調機制

    回調機制是一種常見的設計模型,他把工作流内的某個功能,按照約定的接口暴露給外部使用者,為外部使用者提供資料,或要求外部使用者提供資料。

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

java回調機制:

軟體子產品之間總是存在着一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。

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

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

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

回調和異步調用的關系非常緊密:使用回調來實作異步消息的注冊,通過異步調用來實作消息的通知。

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

用Java裡的例子:

另外的一個類:

第二個類在測試類裡面,是一個匿名類:

上訴的代碼:

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

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