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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JAVA回调机制

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

??? 在這里暫且不討論回調的一些名詞和運行機制,首先說為什么會存在回調這樣一種調用?同步和異步機制的出現不必多說,大家心知肚明,那回調機制為什么會出現呢?在我們現實生活中,有如下這樣場景:有一位老板很忙,他沒有時間盯著員工干活,然后他告訴自己的雇員,干完當前這些事情后,告訴他干活的結果。這個例子其實是一個回調+異步的例子,再舉一個例子,A程序員寫了一段程序a,其中預留了回調函數接口,并封裝好了該程序,程序員B讓a調用自己的程序b中的一個方法,于是,他通過a中的接口回調自己b中的方法,到這里你可能似懂非懂了,后面會繼續說明回調的出現原因。接下來我們把上面例子變成代碼,看到網上很多人最后搞混了異步和回調,因此例子中不加入異步調用。(注意:回調可不是解決什么調用時間過長問題,那是異步!)

? 首先創建一個回調接口,讓老板得告知干完活如何找到他的方式:留下老板辦公室地址:

/** * 此接口為聯系的方式,不論是電話號碼還是聯系地址,作為 * 老板都必須要實現此接口 * @author Administrator * */ public interface CallBackInterface { public void execute(); }

? 創建回調對象,就是老板本人,因為員工干完活后要給他打電話,因此老板必須實現回調接口,不然員工去哪里找老板?

/** * 老板是作為上層應用身份出現的,下層應用(員工)是不知道 * 有哪些方法,因此他想被下層應用(員工)調用必須實現此接口 * @author Administrator * */ public class Boss implements CallBackInterface { @Override public void execute() { System.out.println("收到了!!" + System.currentTimeMillis()); } }

?創建控制類,也就是員工對象,他必須持有老板的地址(回調接口),即使老板換了一茬又一茬,辦公室不變,總能找到對應的老板

/** * 員工類,必須要記住,這是一個底層類,底層是不了解上層服務的 * @author Administrator * */ public class Employee { private CallBackInterface callBack = null; //告訴老板的聯系方式,也就是注冊 public void setCallBack(CallBackInterface callBack){ this.callBack = callBack; } //工人干活 public void doSome(){ //1.開始干活了 for(int i=0;i<10;i++){ System.out.println("第【" + i + "】事情干完了!"); } //2.告訴老板干完了 callBack.execute(); } }

?

? 上面這個例子,大家可以和程序員A和程序員B的那個例子結合對照下。

?? 看了上面的例子,有的人可能認為,這不是面向接口的編程嗎?怎么會是回調,你再好好想想,咱們面向接口的編程的調用關系?在三層中,當業務層調用數據層時,是不需要把業務層自身傳遞到數據層的,并且這是一種上層調用下層的關系,比如我們在用框架的時候,一般直接調用框架提供的API就可以了,但回調不同,當框架不能滿足需求,我們想讓框架來調用自己的類方法,怎么做呢?總不至于去修改框架吧。許多優秀的框架提幾乎都供了相關的接口,我們只需要實現相關接口,即可完成了注冊,然后在合適的時候讓框架來調用我們自己的類,還記不記得我們在使用Struts時,當我們編寫Action時,就需要繼承Action類,然后實現execute()方法,在execute()方法中寫咱們自己的業務邏輯代碼,完成對用戶請求的處理。由此可以猜測,框架和容器中會提供大量的回調接口,以滿足個性化的定制。

?? 知道上面這個例子懂了沒有?我們現在可以想象Filter和Interceptor的區別了,這兩者其中最大的一個區別是Filter是基于回調函數,需要容器的支持,沒有容器是無法回調doFilter()方法,而Interceptor是基于Java的反射機制的,和容器無關。那到此是否又將反射和回調搞混了呢?請見我講Java動態代理的博客:http://blog.csdn.net/bjyfb/article/details/7350256

總之,要明確的一點是,首先要搞清回調函數出現的原因,也就是適用場景,才能搞清楚回調機制,不然事倍功半。

?? 最后,再舉一例,為了使我們寫的函數接近完美,就把一部分功能外包給別人,讓別人個性化定制,至于別人怎么實現不管,我唯一要做的就是定義好相關接口,這一設計允許了底層代碼調用高層定義的子程序,增強程序靈活性,和反射有著異曲同工之妙,我覺得這才是回調的真正原因

總結

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

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

主站蜘蛛池模板: 毛茸茸free性熟hd| 精品视频一二三 | 久久99精品国产91久久来源 | 成人黄色片免费看 | 国产一级自拍视频 | 日韩在线高清 | 国产午夜精品久久久 | 国产在线一区二区视频 | 九九视频免费观看 | 免费在线观看一区二区 | 国产精品一区二区在线播放 | 成人拍拍视频 | 激情啪啪网站 | 91丝袜一区在线观看 | 午夜黄色福利 | 毛片动漫 | 亚洲图片在线播放 | 97无码精品人妻 | 人与动物2免费观看完整版电影高清 | 国产亚洲精品久久久久久久 | 国产奶头好大揉着好爽视频 | 日韩激情av| 成人免费91 | 欧美a视频在线观看 | 精人妻无码一区二区三区 | 日本爽爽爽 | 精品久久久久久中文字幕人妻最新 | 亚洲国产精品成人无久久精品 | 欧美少妇喷水 | 波多野av在线| 大学生高潮无套内谢视频 | 欧美日韩乱| 四色成人| 久久99久久99精品免观看软件 | 欧美一级一片 | 9i看片成人免费高清 | 国产xxxxx| 丰满少妇久久久久久久 | 日韩精品在线观看视频 | 一级性毛片 | 色涩视频在线观看 | 日本成人三级电影 | 人妻精品一区二区三区 | 韩国伦理大全 | 亚洲黄在线观看 | 日韩伦理中文字幕 | 亚洲综合色网 | 国产美女黄色片 | 激情欧美一区二区 | 九九热视频在线免费观看 | 人与动物2免费观看完整版电影高清 | 欧美日韩激情视频 | 国产成人精品一区二区三区网站观看 | 少妇在线视频 | 亚洲AV无码久久精品国产一区 | 内射合集对白在线 | 亚欧精品视频一区二区三区 | 亚洲一区二区精品 | 免费在线观看高清影视网站 | 欧美日韩中文国产 | 在线视频免费播放 | 亚洲永久精品一区二区 | 视色视频在线观看 | 嫩模一区| 久草视频免费在线播放 | 日韩性网| 精品国产一区二区视频 | 国产老头户外野战xxxxx | 亚洲天堂免费视频 | 久久综合精品国产二区无码不卡 | 欧美图片一区 | 91老师片黄在线观看 | 少妇高潮一区二区三区在线 | 欧美熟妇交换久久久久久分类 | 青草99| 黑人乱码一区二区三区av | 熟女性饥渴一区二区三区 | 国产吞精囗交久久久 | 樱花草av| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产一级高清视频 | 欧美日本色图 | 国产精品久久久免费 | 4438x在线观看 | 美女屁股无遮挡 | 亚洲第一av | 男女天堂av | 国产aa视频 | 日本aa在线观看 | 色综合久久久无码中文字幕波多 | 在线天堂1 | 大肉大捧一进一出好爽视频动漫 | 成人福利视频在线观看 | 国产伦精品一区二区免费 | 亚洲免费一级 | 日韩www | 欧美福利视频在线观看 | 亚洲精品久久久久久一区二区 | 国产激情视频在线观看 |