激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

香港云服务器
服務器之家 - 編程語言 - JAVA教程 - 理解Java當中的回調機制(翻譯)

理解Java當中的回調機制(翻譯)

2019-12-02 14:21mdxy-dxy JAVA教程

今天我要和大家分享一些東西,舉例來說這個在JavaScript中用的很多。我要講講回調(callbacks)。你知道什么時候用,怎么用這個嗎?你真的理解了它在java環境中的用法了嗎?當我也問我自己這些問題,這也是我開始研究這些的原因

你好,今天我要和大家分享一些東西,舉例來說這個在JavaScript中用的很多。我要講講回調(callbacks)。你知道什么時候用,怎么用這個嗎?你真的理解了它在java環境中的用法了嗎?當我也問我自己這些問題,這也是我開始研究這些的原因。這個背后的思想是控制反轉( PS:維基百科的解釋是控制反轉(Inversion of Control,縮寫為IoC),是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度。)這個范例描述了框架(framework)的工作方式,也以“好萊塢原則:不要打電話給我們,我們會打給你("Hollywood principle - Don't call me, we will call you)”為人們所熟知。

簡單的Java里的回調模式來理解它,具體的例子在下面:

理解Java當中的回調機制(翻譯)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
interface CallBack {
 void methodToCallBack();
}
 
class CallBackImpl implements CallBack {
 public void methodToCallBack() {
  System.out.println("I've been called back");
 }
}
 
class Caller {
 
 public void register(CallBack callback) {
  callback.methodToCallBack();
 }
 
 public static void main(String[] args) {
  Caller caller = new Caller();
  CallBack callBack = new CallBackImpl();
  caller.register(callBack);
 }
}

你可能要問我,什么時候用這個或者會問直接調用和回調機制有什么不同呢?

答案是:好吧,這個例子僅僅向你展示了怎樣在java環境中構造這樣的回調函數。當然用那種方式使用它毫無意義。讓我們現在更加深入具體地研究它。

在它之中的思想是控制反轉。讓我們用定時器作為現實中的例子。假設你知道,有一個特別的定時器支持每小時回調的功能。準確地說意思是,每小時,定時器會調用你注冊的調用方法。

具體的例子:

我們想要每小時更新一次網站的時間,下面是例子的UML模型:

理解Java當中的回調機制(翻譯)

回調接口:

讓我們首先定義回調接口:

理解Java當中的回調機制(翻譯)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.ArrayList;
import java.util.List;
 
// For example: Let's assume that this interface is offered from your OS to be implemented
interface TimeUpdaterCallBack {
 void updateTime(long time);
}
 
// this is your implementation.
// for example: You want to update your website time every hour
class WebSiteTimeUpdaterCallBack implements TimeUpdaterCallBack {
 
 @Override
 public void updateTime(long time) {
  // print the updated time anywhere in your website's example
  System.out.println(time);
 }
}

在我們的例子中系統定時器支持回調方法:

理解Java當中的回調機制(翻譯)

?
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
// This is the SystemTimer implemented by your Operating System (OS)
// You don't know how this timer was implemented. This example just
// show to you how it could looks like. How you could implement a
// callback by yourself if you want to.
class SystemTimer {
 
 List<TimeUpdaterCallBack> callbacks = new ArrayList<TimeUpdaterCallBack>();
 
 public void registerCallBackForUpdatesEveryHour(TimeUpdaterCallBack timerCallBack) {
  callbacks.add(timerCallBack);
 }
 
 // ... This SystemTimer may have more logic here we don't know ...
 
 // At some point of the implementaion of this SystemTimer (you don't know)
 // this method will be called and every registered timerCallBack
 // will be called. Every registered timerCallBack may have a totally
 // different implementation of the method updateTime() and my be
 // used in different ways by different clients.
 public void oneHourHasBeenExprired() {
 
  for (TimeUpdaterCallBack timerCallBack : callbacks) {
   timerCallBack.updateTime(System.currentTimeMillis());
  }
 }
}

最后是我們虛擬簡單的例子中的網站時間更新器:

理解Java當中的回調機制(翻譯)

?
1
2
3
4
5
6
7
8
9
10
// This is our client. It will be used in our WebSite example. It shall update
// the website's time every hour.
class WebSiteTimeUpdater {
 
 public static void main(String[] args) {
  SystemTimer SystemTimer = new SystemTimer();
  TimeUpdaterCallBack webSiteCallBackUpdater = new WebSiteTimeUpdaterCallBack();
  SystemTimer.registerCallBackForUpdatesEveryHour(webSiteCallBackUpdater);
 }
}

原文:http://cleancodedevelopment-qualityseal.blogspot.com/2012/10/understanding-callbacks-with-java.html

延伸 · 閱讀

精彩推薦
487
主站蜘蛛池模板: 一区国产视频 | 国产美女视频一区二区三区 | 91视频观看免费 | 欧美性色黄大片www 成人免费网站在线观看 | 九九热视频免费观看 | 亚洲一级片在线观看 | 男女亲热网站 | 韩国一级免费视频 | 免费看性xxx高清视频自由 | 一级毛片在线视频 | 亚洲一区二区三区高清视频 | 成人在线激情视频 | 深夜小视频在线观看 | 亚洲最大的成人网 | 91精品国产乱码久久久久久久久 | 国产精品伦视频看免费三 | 羞羞视频在线免费 | 亚洲一区成人 | 精品一区二区三区免费看 | 亚洲国产资源 | 日韩不卡一区二区 | 99精品视频在线观看免费 | 国产手机国产手机在线 | 欧美va亚洲 | 亚洲一区二区在线视频 | 色人阁在线视频 | h色在线观看 | 日韩高清电影 | 欧美精品久久久久久久久老牛影院 | 精品亚洲国产视频 | 小雪奶水翁胀公吸小说最新章节 | 精品久久久久久久久久中文字幕 | h色网站在线观看 | 91专区在线观看 | 91精品国产九九九久久久亚洲 | 国产亚洲精品综合一区91 | 深夜免费视频 | 亚洲午夜精品视频 | 午夜精品在线播放 | 免费小毛片| 久久精品亚洲精品国产欧美kt∨ |