一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Java回調函數原理實例與代理模式的區別講解

Java回調函數原理實例與代理模式的區別講解

2021-07-14 15:33plumblum Java教程

今天小編就為大家分享一篇關于Java回調函數原理實例與代理模式的區別講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

java 回調函數例子,及其原理,與代理模式的區別

回調函數

應用程序(application program)會時常通過api調用庫里所預先備好的函數。但是有些庫函數(library function)卻要求應用先傳給它一個函數,好在合適的時候調用,以完成目標任務。這個被傳入的、后又被調用的函數就稱為回調函數(callback function)。

作用: 可以把調用者與被調用者分開。調用者不關心誰是被調用者,所有它需知道的,只是存在一個具有某種特定原型、某些限制條件(如返回值為int)的被調用函數。

例子

一個計算函數運行時間的工具類,正常方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
 * @auther: cpb
 * @date: 2019/1/17 16:32
 * @description:
 */
public class runningtime {
  /**
   * 一個用來被測試的方法,進行了一個比較耗時的循環
   */
  public  static  void testmethod(){
    for ( int i= 0 ; i< 100000000 ; i++){
    }
  }
  /**
   * 一個簡單的測試方法執行時間的方法
   */
  public void testtime(){
    long begin = system.currenttimemillis(); //測試起始時間
    testmethod(); //測試方法
    long end = system.currenttimemillis(); //測試結束時間
    system.out.println("[use time]:" + (end - begin)); //打印使用時間
  }
  public static void main(string[] args) {
    runningtime test=new runningtime();
    test.testtime();
  }
}

創建回調函數接口

?
1
2
3
4
public interface callback {
  //執行回調操作的方法
  void execute();
}

回調函數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
 * @auther: cpb
 * @date: 2019/1/17 16:35
 * @description:
 */
public class tools {
  /**
   * 測試函數使用時間,通過定義callback接口的execute方法
   * @param callback
   */
  public  void testtime(callback callback) {
    long begin = system.currenttimemillis(); //測試起始時間
    callback.execute(); ///進行回調操作
    long end = system.currenttimemillis(); //測試結束時間
    system.out.println("[use time]:" + (end - begin)); //打印使用時間
  }
  public  static  void main(string[] args) {
    tools tool = new tools();
    tool.testtime(new callback(){
      //定義execute方法
      public  void execute(){
        //這里可以加放一個或多個要測試運行時間的方法
        runningtime.testmethod();
      }
    });
  }
}

為什么叫回調函數

我們觀看一下程序運行的流程,tools->callbacks->tools,顧為回調函數。

代理模式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//接口
public interface callback {
  //執行回調操作的方法
  void execute();
}
//實現類
public class mycallback implements callback{
  @override
  public void execute() {
    mycallback.testmethod();
  }
  public  static  void testmethod(){
    for ( int i= 0 ; i< 100000000 ; i++){
    }
  }
}
//代理類
public class proxy implements callback {
  private callback callback;
  public proxy(callback callback){
    this.callback = callback;
  }
  @override
  public void execute() {
    callback.execute();
  }
}
//調用方法類
public class tools {
  /**
   * 測試函數使用時間,通過定義callback接口的execute方法
   * @param callback
   */
  public  void testtime(callback callback) {
    long begin = system.currenttimemillis(); //測試起始時間
    callback.execute(); ///進行回調操作
    long end = system.currenttimemillis(); //測試結束時間
    system.out.println("[use time]:" + (end - begin)); //打印使用時間
  }
  public  static  void main(string[] args) {
    tools tool = new tools();
    //讓代理去實現方法去調用方法
    proxy proxy = new proxy(new mycallback());
    tool.testtime(proxy);
  }
}

代理模式和回調函數的區別

  1. 代理模式需要創建接口實現類,并放入代理類中,隔離性更好,擴展性好
  2. 回調函數不需要創建接口實現類,編寫方便。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://blog.csdn.net/c_royi/article/details/86528158

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久精品国产一区二区 | 视频免费看 | 交换朋友夫妇3中文字幕 | 午夜亚洲WWW湿好大 午夜想想爱 | naruto堂同人本子汉化gg | 精品日韩欧美一区二区三区在线播放 | 欧美性4khd720| 娇妻被老外疯狂调教 | 99久久免费国产精品热 | 欧美一级欧美一级高清 | 91制片厂 果冻传媒 天美传媒 | 日韩一级片在线观看 | 黑人与欧洲女子性大战 | 男人在女人下面狂躁 | 韩剧hd| 污丝瓜视频 | 国产在线98福利播放视频免费 | 亚洲va在线va天堂va偷拍 | 视频在线精品 | 成年视频在线观看 | yy111111影院理论大片 | 成人福利网站含羞草 | 美女的隐私视频免费看软件 | 男人的天堂久久精品激情a 男人的天堂va | 荡女人人爱全文免费阅读 | 美琪美腿白丝交小说 | 东北疯狂xxxxbbbb中国 | 国产欧美久久久精品影院 | 欧美在线一二三区 | 国产伦精品一区二区三区免费迷 | 高清男的插曲女的 欢迎你老狼 | 亚洲日本视频在线 | 青草福利在线 | 日韩精品视频福利资源站 | 翁用力的抽插 | 9420高清视频在线观看网百度 | 久久九九有精品国产23百花影院 | 精品AV亚洲乱码一区二区 | 日本艳鉧动漫1~6在线观看 | 日本高清va不卡视频在线观看 | 亚洲伦理影院 |