在網上看了好多關于java回調的文章,自己總結了一下(個人意見,僅供參考):
JAVA通過接口來實現CALLBACK。 例: 1.class A,class B 2.class A實現接口operate 3.class B擁有一個參數為operate接口類型的函數test(operate o) 4.class A運行時調用class B中test函數,以自身傳入參數 5.class B已取得A,就可以隨時回調A所實現的operate接口中的方法
=========================================================================
接口和回調.編程一個常用的模式是回調模式,在這種模式中你可以指定當一個特定時間發生時回調對象上的方法。
==========================================================================
概括一句:回調函數實際上就是在調用某個函數(通常是API函數)時,將自己的一個函數(這個函數為回調函數)的地址作為參數傳遞給那個函數。而那個函數在需要的時候,利用傳遞的地址調用回調函數,這時你可以利用這個機會在回調函數中處理消息或完成一定的操作。
===========================================================================
借用John D. Mitchell的例子應該比較好理解
在MS-Windows或者X-Window系統的事件驅動模型中,當某些事件發生的時候,開發人員已經熟悉通過傳遞函數指針來調用處理方法。而在Java的面向對象的模型中,不能支持這種方法,因而看起來好像排除了使用這種比較舒服的機制,但事實并非如此。
Java的接口提供了一種很好的機制來讓我們達到和回調相同的效果。這個訣竅就在于定一個簡單的接口,在接口之中定義一個我們希望調用的方法。
舉個例子來說,假設當一個事件發生的時候,我們想它被通知,那么我們定義一個接口:
這就給我們一個控制實現了該接口的所有類的對象的控制點。因此,我們不需要關心任何和自己相關的其它外界的類型信息。這種方法比C函數更好,因為在C++風格的代碼中,需要指定一個數據域來保存對象指針,而Java中這種實現并不需要。
發出事件的類需要對象實現InterestingEvent接口,然后調用接口中的interestingEvent ()方法。
在這個例子中,我們使用了somethingHappened這個標志來跟蹤是否事件應該被激發。在許多事例中,被調用的方法能夠激發interestingEvent()方法才是正確的。
希望收到事件通知的代碼必須實現InterestingEvent接口,并且正確的傳遞自身的引用到事件通知器。
------------------------------
奧尚生活: http://www.wanghengliang.cn
南充奧尚軟件: http://www.Aosunsoft.com 南充軟件開發
posted on 2008-02-17 12:25 siyn 閱讀(993) 評論(1) 編輯 收藏 所屬分類: java