您现在的位置是:主页 > news > 湖北住房和城乡建设委员会网站/地推网

湖北住房和城乡建设委员会网站/地推网

admin2025/5/1 7:12:07news

简介湖北住房和城乡建设委员会网站,地推网,危险网站怎么办,网站制作多少费用应用场景:比如我写一个工具,下载任务,下载任务可能成功,可能失败。为了解耦,我的这个下载工具类只能专门用来下载,如何处理成功和失败,这个就交给调用方来完成。 回调接口 接口声明。 /*** 描…

湖北住房和城乡建设委员会网站,地推网,危险网站怎么办,网站制作多少费用应用场景:比如我写一个工具,下载任务,下载任务可能成功,可能失败。为了解耦,我的这个下载工具类只能专门用来下载,如何处理成功和失败,这个就交给调用方来完成。 回调接口 接口声明。 /*** 描…

应用场景:比如我写一个工具,下载任务,下载任务可能成功,可能失败。为了解耦,我的这个下载工具类只能专门用来下载,如何处理成功和失败,这个就交给调用方来完成。

回调接口

接口声明。

/*** @描述: 结果回调*/
public interface ResultCallback {void success();void failure(Exception e);
}

被调用方(下载任务)

接口定义,并使用。

/*** @描述: 下载任务*/
public class Download {private ResultCallback callback;public Download(ResultCallback callback) {this.callback = callback;}public void excuteDownload(String usrl) {new Thread(new Runnable() {@Overridepublic void run() {HttpURLConnection conn = null;try {conn = (HttpURLConnection) new URL(usrl).openConnection();conn.setConnectTimeout(5 * 1000);conn.setRequestMethod("GET");//do download things here ...callback.success();  //thing's done callback} catch (IOException e) {callback.failure(e);   // thing's error  callback}}});}
}

调用方

接口实现。

  public static void main(String args[]){new Download(new ResultCallback() {@Overridepublic void success() {//do something when work is done}@Overridepublic void failure(Exception e) {//do something when work is fail}}).excuteDownload("your parameter");}

总结:接口回调,实际上是利用了java中的多态性,利用父亲引用指向子类的地址,从而实现父亲接口调用子类实现类的方法。接口回调是设计模式的解耦核心,可以说几乎所有的模式都用到了接口回调。