日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java回调机制及其实现(转)

發布時間:2025/6/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java回调机制及其实现(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 什么是回調函數

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

? (1)屬于工作流的一個部分;
??(2)必須按照工作流指定的調用約定來申明(定義);
? ? (3)他的調用時機由工作流決定,回調函數的實現者不能直接調用回調函數來實現工作流的功能;

2. ?回調機制

回調機制是一種常見的設計模式,它把工作流內的某個數據處理邏輯,按照約定的接口暴露給外部使用者。為外部使用者提供數據,或要求外部使用者提供數據。
就像電腦上的USB接口,插什么U盤都可以,可以從電腦上Copy數據,也可以Copy數據到電腦。

3.java的回調機制

軟件模塊之間總是存在這一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調、異步調用。

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

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

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

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

?

4.回調的java例子

例1:

?

public class CallbackExample { public static void main(String[] args) { FooBar fooBar = new FooBar(); fooBar.setCallback(new ICallback() { public void postExec() { System.out.println("在CallbackExample類中實現但不能被CallbackExample的對象調用,而由FooBar對象調用"); } }); } } interface ICallback { //需要回調的方法 public void postExec(); } class FooBar { private ICallback callback; public void setCallback(ICallback callback) { this.callback = callback; doSth(); } public void doSth() { callback.postExec(); } }

?

例2:

?

public class CallbackFetcherExample { public static void main(String[] args) { new Worker().doWork(); } } interface FetchCallback { void onData(Data data); void onError(Throwable cause); } interface Fetcher { void fetchData(FetchCallback callback); } class Worker { Data data = new Data(); public void doWork() { Fetcher fetcher = new Fetcher() { public void fetchData(FetchCallback callback) { System.out.println("start fetch data..."); callback.onData(data); } }; fetcher.fetchData(new FetchCallback() { public void onData(Data data) { // call if data is fetched without error System.out.println("Data received: " + data); } public void onError(Throwable cause) { //call if error is received during fetch System.err.println("An error accour: " + cause.getMessage()); } }); } } class Data { }

http://blog.csdn.net/xyls12345/article/details/26452247?

??

觀察者模式與回調機制的關系

觀察者模式:在對象之間定義一對多的依賴,這樣一來,當一個對象改變狀態,依賴它的對象都會收到通知,并自動更新。?

以上篇博文java回調機制及其實現為例,在例1中可以將FooBar作為一個主題(被觀察者),ICallback的實現對象作為觀察者,當FooBar調用setCallback時,通知ICallback的postExec()方法改變狀態,當然這是一對一的依賴。

所以,我們可以把回調機制是觀察者模式的一個特殊類型,即只有一個觀察者。
http://blog.csdn.net/xyls12345/article/details/26456323

?

轉載于:https://www.cnblogs.com/softidea/p/4861217.html

總結

以上是生活随笔為你收集整理的java回调机制及其实现(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。