接口回调用法解析

el/2024/2/25 16:22:59

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

回调接口

接口声明。

/*** @描述: 结果回调*/
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中的多态性,利用父亲引用指向子类的地址,从而实现父亲接口调用子类实现类的方法。接口回调是设计模式的解耦核心,可以说几乎所有的模式都用到了接口回调。


http://www.ngui.cc/el/4466050.html

相关文章

IOC原理之IoC容器的初始化过程

IoC容器的初始化过程包括Resource定位、BeanDefinition的载入以及向IoC容器注册这些BeanDefinition三个阶段。 IoC容器的初始化过程概要 IoC容器的初始化包括三个过程: 第一个过程是 Resource定位 过程。这个Resource定位指的是BeanDefinition的资源定位&#xff…

Spring AOP原理之建立AopProxy代理对象

在Spring AOP实现中,使用的核心技术是动态代理,而这种动态代理实际上是JDK的一个特性(在JDK 1.3以上的版本里,实现了动态代理模式)。通过JDK的动态代理特性,可以为任意Java对象创建代理对象,对于具体使用来说&#xff…

Spring AOP原理之拦截器调用的实现

接上文 Spring AOP原理之建立AopProxy代理对象 在Spring AOP通过JDK的Proxy方式或CGLIB方式生成代理对象的时候,相关的拦截器已经配置到代理对象中去了,拦截器在代理对象中起作用是通过对这些方法的回调来完成的。如果使用JDK的Proxy来生成代理对象&…

Spring MVC原理之Spring应用上下文(IoC容器)在Web容器中的启动分析

Spring IoC是一个独立的模块,它并不是直接在Web容器中发挥作用的。如果要在Web环境中使用IoC容器,需要Spring为IoC设计一个启动过程,把IoC容器导人,并在Web容器中建立起来。具体说来,这个启动过程是和Web容器的启动过程…

Spring MVC原理之Spring MVC的设计与实现

接上文 SpringMVC原理之Spring应用上下文(Ioc容器)在Web容器中的启动分析。 在前文的分析过程中,了解了 Spring的上下文体系通过ContextLoader和DispatcherServiet建立并初始化的过程。在完成对ContextLoaderListener的初始化以后&#xff0c…

Spring JDBC的设计与实现

设计原理 在Spring JDBC中,JdbcTemplate 是一个主要的模板类,它的类继承关系如图: 从类继承关系上来看,JdbcTemplate继承了基类JdbcAccessor和接口类JdbcOperation。在基类JdbcAccessor的设计中,对DataSource数据源…

Spring事务处理浅析

类层次结构 在Spring的事务处理模块中.可以看到的类层次结构如图: 可以看到,Spring事务处理模块是通过AOP功能来实现声明式事务处理的,比如事务属性的配置和读取,事务对象的抽象等。因此,在Spring事务处理中&#xff…

dubbo管理控制台dubbo-admin安装

资源: dubbo源码 和 中文文档 下载源码 下载dubbo-admin模块代码,这个还真不太好找,可能是因为dubbo迁移至Apache 维护后,代码还没迁移好??? 我是在 https://github.com/apache/incubator-du…

React Native 项目环境配置、调试以及打包

去年在做React Native混合开发的时候,写过几篇笔记: react-native对android物理返回键back的监听以及基类封装 react native导航navigator react-native 与安卓端通信 android 端集成react native Fetch 网络请求简单封装,支持超时入口 …

Rest 概要

REST RESTful Representational State Transfer。是在因特网上提供计算机系统之间的互操作性的一种方式。基于Http协议的资源传递,包括JSON、XML和文本等。 统一接口 资源识别(Identification of resources) URI(Uniform Resou…