原味鏈接:認識回調 轉載請注明出處~
回調是啥呢,首先想想為啥叫回調呢,哪回了?調啥了?中國漢字博大精深,如果一篇博客說了一堆blabla的但是你沒有理解為啥叫回調,那算是白看了。
回調怎么用
先來看一下模板
- 首先,有一個接口
interface CallBack {
public void execute();
}
- 然后,要有類來實現(xiàn)這個接口
class A implements CallBack {
@override
public void execute(){
xxx...//想怎么實現(xiàn)就怎么實現(xiàn)好啦
}
}
- 再然后,還得有個類,這里面有個方法
b()調用了剛才的execute()方法,那當A中的一個指向b的引用調用b()的時候,是不是就有調用了A中的execute()方法呀,這不是就回調了嘛~
class B {
CallBack callback; //有一個CallBack的引用
b(){
callback.execute(); //有一個方法是調用了接口的方法,那這個方法就被回調了嗎,就叫回調方法了
}
}
回調有啥用
舉個例子,我們向外提供某個服務b,有好多業(yè)務方都需要調用我們的服務,調用后以某種方式展示在他們的業(yè)務上。那這個時候我們把我們服務的源代碼拷給他們挨個提供服務嗎?大可不必,我們提供一個方法b(),b()調用回調方法,當業(yè)務方調用我們服務的b()的時候,我們的方法執(zhí)行后直接以回調的形式將結果反饋給業(yè)務方。
舉個具體的例子,小紅很有錢,買了個計算器,可以提供計算服務caculate()。不想自己算的小明想調用這個方法來寫作業(yè)work(),糊涂的老奶奶也想調用這個方法來算賬work(),這樣只要小明和老奶奶都調用calculate()方法,小紅的caculate()調用小明和老奶奶統(tǒng)一使用接口的work()方法,小紅可以給多個不同需求的業(yè)務提供服務了。
那為啥不直接調用小紅的calculate()方法,得到一個返回值不就行了嗎?那小明和老奶奶還要了解小紅的這個方法調用返回的結果都是什么,怎么處理。實際中了解另一個業(yè)務的參數(shù)返回值啊這些都比較麻煩,回調做到了真正的解耦。只要小明和老奶奶按照統(tǒng)一接口定義方法的格式定義回調方法,那小紅就可以提供一站式服務。(個人理解)
如果你木有看懂這篇文章,可以去看Bro__超JAVA回調機制(CallBack)詳解,感覺講的很清晰~ 強烈推薦~
參考文章
Bro__超JAVA回調機制(CallBack)詳解
That's all,enjoy it~
歡迎訪問博主個人博客:http://kongdehui.com/ ~~~