• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦>知識大全>知識百科>百科知識>

    java什么是回調

    時間: 歐東艷656 分享

      軟件模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;異步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的接口)。回調和異步調用的關系非常緊密,通常我們使用回調來實現異步消息的注冊,通過異步調用來實現消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎,因此,下面我們著重討論回調機制在不同軟件架構中的實現。

      Java的回調簡單的說,回調函數就是通過其指針來調用的函數(這句話確實夠簡單的,下面會詳細的描述);回調函數不會被自己所在的對象調用,只會在調用別人的方法的時候反過來被調用。我們知道android程序是通過java來實現的,java中是沒指針的,那么怎么實現回調呢,通過接口、或者抽象類。

      實現步驟:

      1、定義一個接口,其中包含一個方法a;

      2、定義一個實現這個接口的類A,實現方法 a(此處的a就是傳說中的回調函數,此處不一定要在聲明類的時候實現這個接口,也可以在類中去實現這個接口,我會分別舉例子)

      3、定義一個類B,在B中定義一個方法b,b以第一步中定義的接口作為參數;

      4、在A中調用方法b,把自己作為參數傳遞進去;

      5、在B中通過傳遞進來的參數A(實現了接口)去調用a,這就實現了回調;

      至于為什么要使用回調函數呢?在一位大神的博客里面看到這句話“回調功能是實現功能和定義分離的一種手段,是一種松耦合的設計思想”,有的人就會問了,為什么要實現定義和功能分離呢?我們在剛開始接觸面向對象的這個概念的時候,應該經常聽到這種說法:面向對象是要實現高內聚、低耦合,方便程序的修改和擴展。我覺得函數的定義和功能的分離應該也是這個道理吧。在下面的例子中我會在注釋中從另外一個方面說明回調函數的必要性。

      其次,看代碼吧

      代碼1,在聲明類的時候實現接口:

      [java] view plaincopypackage com.callback;

      /* 第一步:定義一個接口,其中包含一個方法a*/

      public interface Callback {

      public void a(int i);

      }

      [java] view plaincopypackage com.callback;

      /* 第二步:定義一個實現這個接口的類A,實現方法 a*/

      public class A implements Callback{

      static B b = new B();

      /* 此處為什么要定義一個常量呢?

      * 我是想從另一個方面(松耦合的設計思想算是一方面吧)說明回調方法的必要性,

      * 暫時先不用管,后面會繼續說明的*/

      final int Constant = 1;

      @Override

      /* 回調方法不會在A類中被調用的,注意看待會他會在哪被調用 */

      public void a(int result) {

      // TODO Auto-generated method stub

      System.out.println(result);

      }

      public static void main(String[] args) {

      // TODO Auto-generated method stub

      /* 第四步:在A中調用方法b,把自己作為參數傳遞進去,

      * 此處A中的常量Constant,也會隨著A被傳到B中*/

      b.b(new A());

      }

      }

    java什么是回調

    軟件模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;回調是一種雙向調用模式,也就是說,被調用方在接口被
    推薦度:
    點擊下載文檔文檔為doc格式
    245810 主站蜘蛛池模板: 久久久久久久无码高潮| 99视频精品全部在线| 日本成人免费在线视频| 亚洲欧美一区二区三区孕妇| 精品国产日韩亚洲一区在线| 国产成A人亚洲精V品无码性色 | 亚洲欧美日韩综合一区| 精品爆乳一区二区三区无码av | 成人品视频观看在线| 久久精品免费一区二区| 欧美成人免费一区二区| 俄罗斯精品bbw| 精精国产www视频在线观看免费| 国产成人无码av在线播放不卡 | 久久无码精品一区二区三区| 欧美另类杂交a| 亚洲综合伊人久久大杳蕉| 精品无码一区二区三区亚洲桃色| 国产产一区二区三区久久毛片国语| 爽爽影院在线看| 国产色无码精品视频国产| j8又粗又硬又大又爽视频 | 国产精品资源在线| chinesegay成年男人露j网站| 成人欧美视频在线观看| 久久亚洲欧美国产精品| 旧里番洗濯屋1一2集无删减 | 美女浴室被爆羞羞漫画| 国产产一区二区三区久久毛片国语| 黄色免费网站网址| 国产精品你懂得| 69堂午夜精品视频在线| 在人间电影在线观看完整版免费 | 国产乱子伦在线观看| 麻豆网神马久久人鬼片| 国产精一品亚洲二区在线播放| 8av国产精品爽爽ⅴa在线观看 | 国产麻豆精品高清在线播放| XXX2高清在线观看免费视频| 小唐璜情史在线播放| 中文字幕中文字字幕码一二区|