你好,今天我要和大家分享一些东西,举例来说这个在Java脚本语言中用的很多。我要讲讲回调(回调).你知道什么时候用,怎么用这个吗?你真的理解了它在爪哇岛环境中的用法了吗?当我也问我自己这些问题,这也是我开始研究这些的原因。这个背后的思想是控制反转(PS:维基百科的解释是控制反转(控制反转,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。)这个范例描述了框架(框架)的工作方式,也以"好莱坞原则:不要打电话给我们,我们会打给你('好莱坞原则——不要叫我,我们会叫你)为人们所熟知。
简单的爪哇里的回调模式来理解它,具体的例子在下面:
接口回调{ void methodocalback();}类CallBackImpl实现回调{ public void methodocallback(){ system。出去。println('我被回调了');} }类呼叫者{公共无效注册(回调回调){回调。方法来回调();}公共静态void main(String[]args){ 0调用者调用者=新调用者();回调回调=new CallBackImpl();caller.register(回调);}}你可能要问我,什么时候用这个或者会问直接调用和回调机制有什么不同呢?
答案是:好吧,这个例子仅仅向你展示了怎样在爪哇岛环境中构造这样的回调函数。当然用那种方式使用它毫无意义。让我们现在更加深入具体地研究它。
在它之中的思想是控制反转。让我们用定时器作为现实中的例子。假设你知道,有一个特别的定时器支持每小时回调的功能。准确地说意思是,每小时,定时器会调用你注册的调用方法。
具体的例子:
我们想要每小时更新一次网站的时间,下面是例子的用户模式模型:
回调接口:
让我们首先定义回调接口:
导入Java。乌提尔。ArrayList导入Java。乌提尔。列表;//例如:让我们假设这个接口是由您的操作系统提供的,以实现接口TimeUpdaterCallBack { void updateTime(长时间);}//这是你的实现。//例如:您希望每小时更新一次您的网站类WebSiteTimeUpdaterCallBack实现TimeUpdaterCallBack { @ Override public void updateTime(长时间){ //在您网站的示例System.out.println(时间)中的任何位置打印更新的时间;}}在我们的例子中系统定时器支持回调方法:
//这是你的操作系统(操作系统)实现的系统定时器你不知道这个定时器是怎么实现的。这个例子只是向你展示了它的样子。如果您愿意,如何自己实现//回调public void registercallback for updateseveryhour(TimeUpdaterCallBack timerCallBack){ 0回调。添加(timerCallBack);} //.这个系统定时器可能有更多我们不知道的逻辑.//在实现这个系统定时器的某个时候(你不知道)//这个方法会被调用,每个注册的timerCallBack //都会被调用。每个注册的timerCallBack可能都有一个完全不同的方法updateTime()和我的be /的//实现,由不同的客户端以不同的方式使用公共无效一小时已过期(){ for(TimeUpdaterCallBack timerCallBack :回调){ timerCallBack。updatetime(系统。currentimemillis());} }}最后是我们虚拟简单的例子中的网站时间更新器:
//这是我们的客户。它将在我们的网站示例中使用。它应该每小时更新//网站的时间TimeUpdaterCallBack websiteallbackupdater=new websiteatimeupdatercallback();系统定时器。registercallbackfor updateseveryhour(WebSitecallbackupdater);}}原文:http://清洁代码开发-质量印章。布洛格斯波特。com/2012/10/谅解-回调-with-java.html