Java編程程序回調(diào)函數(shù)的理解
所謂回調(diào),就是客戶(hù)程序C調(diào)用服務(wù)程序S中的某個(gè)函數(shù)A,然后S又在某個(gè)時(shí)候反過(guò)來(lái)調(diào)用C中的某個(gè)函數(shù)B,對(duì)于C來(lái)說(shuō),這個(gè)B便叫做回調(diào)函數(shù)。例如Win32下的窗口過(guò)程函數(shù)就是一個(gè)典型的回調(diào)函數(shù)。一般說(shuō)來(lái),C不會(huì)自己調(diào)用B,C提供B的目的就是讓S來(lái)調(diào)用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名誰(shuí),所以S會(huì)約定B的接口規(guī)范(函數(shù)原型),然后由C提前通過(guò)S的一個(gè)函數(shù)R告訴S自己將要使用B函數(shù),這個(gè)過(guò)程稱(chēng)為回調(diào)函數(shù)的注冊(cè),R稱(chēng)為注冊(cè)函數(shù)。Web Service以及Java的RMI都用到回調(diào)機(jī)制,可以訪(fǎng)問(wèn)遠(yuǎn)程服務(wù)器程序六 和 彩開(kāi)獎(jiǎng)重新舉個(gè)例子來(lái)理解回調(diào):
我遇到了一個(gè)問(wèn)題,便用家里的固話(huà)打給我的同事,他說(shuō)不太清楚,稍后給我回復(fù)。我說(shuō)我一會(huì)要出去,你想到了之后打我手機(jī)吧。沒(méi)過(guò)多久,我同事就打手機(jī)過(guò)來(lái)告訴了我答案六 和 彩 資料
下面是代碼:
1、先定義一個(gè)接口,規(guī)定回答問(wèn)題的條件是打我手機(jī)
1. public interface CallBack {
2. //通過(guò)手機(jī)回答
3. void CallIphone();
4. }
2、調(diào)用者(我):
1. public class Me {
2. public void askQuestion(){
3. System.out.println("撥打固話(huà)問(wèn)1+1=?");
4. }
5. }
3、被調(diào)用者(同事):
1. public class You {
2.
3. public void answer(CallBack callBack){
4. //進(jìn)行回調(diào)
5. callBack.CallIphone();
6. }
7.
8. public static void main(String[] args) throws InterruptedException {
9. new Me()。askQuestion();
10. Thread.sleep(3000);
11. new You()。answer(new CallBack() {
12. //實(shí)現(xiàn)接口,即回答問(wèn)題的方式
13. public void CallIphone() {
14. System.out.println("撥打手機(jī)回答等于2");
15. }
16. });
17. }
18. }
4、顯示結(jié)果
撥打固話(huà)問(wèn)1+1=?
撥打手機(jī)回答等于2
代碼很簡(jiǎn)單,理解也很膚淺,希望對(duì)大家有用。
posted on 2012-02-23 20:19 好不容易 閱讀(195) 評(píng)論(0) 編輯 收藏