当前位置: 首页 > news >正文

蓝色经典网站网页魔域

蓝色经典网站,网页魔域,seo排名赚挂机赚钱软件下载,字体 wordpress一、retrofit 是什么#xff1f; Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。 网络请求的工作本质上是 OkHttp 完成#xff0c;而 Retrofit 仅负责 网络请求接口的封装。 1#xff09;App应用程序通过 Retrofit 请求网络#xff0c;实际上是使用 Retrofit 接口…一、retrofit 是什么 Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。 网络请求的工作本质上是 OkHttp 完成而 Retrofit 仅负责 网络请求接口的封装。 1App应用程序通过 Retrofit 请求网络实际上是使用 Retrofit 接口层封装请求 参数、Header、Url 等信息之后由 OkHttp 完成后续的请求操作。 2在服务端返回数据之后OkHttp 将原始的结果交给 RetrofitRetrofit根据用 户的需求对结果进行解析。 二、retrofit 总流程 1通过解析网络请求接口的注解配置网络请求参数 2通过动态代理生成网络请求对象 3通过网络请求适配器将网络请求对象进行平台适配 4通过网络请求执行器发送网络请求 5通过数据转换器解析服务器返回的数据 6通过回调执行器切换线程子线程 -主线程 7用户在主线程处理返回结果。 三、代理实例创建过程 1:成功建立一个Retrofit对象的标准配置好Retrofit类里的成员变量 baseUrl网络请求的url地址 callFactory网络请求工厂 callbackExecutor回调方法执行器 adapterFactories网络请求适配器工厂的集合 converterFactories数据转换器工厂的集合 2:创建了一个ISharedListService接口类的对象create函数内部使用了动态代理来创建接口对象这样的设计可以让所有的访问请求都被代理。 通过 Retrofit. create( ciass)方法创建出 Service interface 的实例从而使得 Service 中配置的方法变得可用这是 Retrofit 代码结构的核心Retrofit.create()方法内部使用的是Proxy.newProxylnstancef)方法来创建Service 实例。这个方法会为参数中的多个 interface (具体到 Retrofit 来说是固定传入一个interface)创建一个对象这个对象实现了所有 interface 的每个方法并且每个方法的实现都是雷同的调用对象实例内部的一个工 nvocationHandler 成员变量的 invoke()方法并把自己的方法信息传递进去。这样就在实质上实现了代理逻辑interface 中的方法全部由一个另外设定的 InvocatioriHandler 对象来进行代理操作。并且这些方法的具体实现是在运行时生成 interface 实例时才确定的而不是在编译时虽然在编译时就已经可以通过代码逻辑推断出来。这就是动态代理机制的具体含义。 四、访问接口创建过程 CallSharedListBeansharedListCallsharedListService.getSharedList(2,1); 调用getSharedList的时候在动态代理里面会存在一个函数getSharedList这个函数里面会调用invoke这个invoke函数也就是retrofit里面invoke函数。所以动态代理可以代理所有的接口让所有的接口都走invoke函数这样就可以拦截调用函数的执行从而将网络接口的参数配置归一化。 五、网络请求过程 converter response2javaBean  六、设计模式  1Retrofit 实例使用建造者模式通过Builder类构建。当构造函数的参数大于4个且存在可选参数的时候既可以使用 建造者设计模式 2Retrofit 创建时的callFactory使用工厂方法设计模式但是似乎并不打算支持其他的工厂 3整个retrofit 采用的时外观模式。统一的调用创建网络请求接口实例和网络请求参数配置的方法 4Retrofit里面使用了动态代理来创建网络请求接口实例这个是retrofit对用户使用来说最大的复用其它的代码都是为了支撑这个动态代理给用户带来便捷性的 动态代理和静态代理的区别 静态代理类由程序员创建或工具生成代理类的源码再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件代理类和委托类的关系在运行前就确定了。 动态代理类是在程序运行期间由 JVM 根据反射等机制动态的生成所以不存在代理类的字节码文件。代理类和委托类的关系是在程序运行时确定。 静态代理 静态代理业务类只需要关注业务逻辑本身保证了业务类的重用性。代理对象的一个接口只服务于一种类型的对象如果要代理的方法很多需要为每一种方法都进行代理静态代理在程序规模稍大时就无法胜任。如果接口增加一个方法除了所有实现类需要实现这个方法外所有代理类也需要实现此方法增加了代码维护的复杂度。 动态代理 动态代理与静态代理相比较最大的好处是接口中声明的所有方法都被转移到调用处理器一个集中的方法中处理InvocationHandler invoke。这样在接口方法数量比较多的时候可以进行灵活处理而不需要像静态代理那样每一个方法进行中转。而且动态代理的应用使类职责更加单一复用性更强。 5使用了策略模式对serviceMethod对象进行网络请求参数配置即通过解析网络请求接口方法的参数、返回值和注解类型从Retrofit对象中获取对应的网络的url地址、网络请求执行器、网络请求适配器和数据转换器 6ExecuteCallBack 使用装饰者模式来封装callbackExecutor用于完成线程的切换 7ExecutorCallbackCall 使用静态代理(委托) 代理了Call进行网络请求真正的网络请求由okhttpCall执行然而okHttpCall不是自己执行它是okhttp 提供call给 外界retrofit使用的唯一门户其实这个地方就是门面模式 8ExecutorCallbackCall 的被初始化是在 ExecutorCallAdapterFactory里面通过适配器模式被创建的。CallAdapter采用了适配器模式 为创建访问Call接口提供服务。默认不添加Rxjava则使用默认的ExecutorCallAdapterFactory 将okhttp3.call转变成为 retroift中的call如果有Rxjava则将okhttp3.call转化为abservable。 七、总结 Retrofit 通过 java 接口以及注解来描述网络请求并用动态代理的方式生成网络请求的 request然后通过 client 调用相应的网络框架默认 okhttp去发起网络请求并将返回的 response 通过 converterFactorty 转换成相应的数据 model最后通过 calladapter 转换成其他数据方式如 rxjava Observable等。 Retrofit 优点 可以配置不同 HTTP client 来实现网络请求如 okhttp、httpclient 等 请求的方法参数注解都可以定制 支持同步、异步和 RxJava 超级解耦 可以配置不同的反序列化工具来解析数据如 json、xml 等 框架使用了很多设计模式。
http://www.zqtcl.cn/news/316243/

相关文章:

  • 网站个人备案和企业备案潍坊公司注册网站
  • 建个网站的流程互联网裁员
  • 设置网站模板汉口网站建设公司
  • 网站对一个关键词做排名怎么做网站建设 图纸网
  • 什么网站比较吸引流量网页设计代码td
  • 克隆网站怎么做后台wordpress网站缩
  • 仁怀哪儿做网站泰安市建设局
  • 做网站和编程有关系吗手机怎么做电子书下载网站
  • 网站做关键词排名网站快速排名的方法
  • 有网站模板如何预览泉州app开发
  • 网站自助建站系统重庆皇华建设集团有限公司网站
  • 云速成美站做网站好吗汕头制作网站
  • 搜狗搜索网站提交入口在哪里做卖车网站
  • 河南省百城建设提质网站新人怎么做电商
  • 建设机械网站制作创建个人网站教案
  • 无锡网站推广装修风格大全2023新款
  • 在线设计logo免费网站如何在网站上添加qq
  • 高端网站建设哪里好网站建设与管理案例教程
  • 云南专业网站建设上海百度移动关键词排名优化
  • 如何搭建一个完整的网站wordpress 小程序开发
  • 外贸网站建设关键点为网站网站做代理被判缓刑
  • 网站免费正能量小说台州百度关键词优化
  • 保定自助建站做静态网站
  • 旅游网站对比模板免费招收手游代理
  • phpstudy网站建设教程wordpress破解管理员帐号
  • 商务网站规划与建设心得北京小程序制作首选华网天下
  • 果洛电子商务网站建设多少钱公司网站建设选什么服务器
  • 莱芜做网站公司网站建设表单教案
  • 建设酒类产品网站的好处遵义网站制作费用
  • 高端网站设计价格wordpress登录下载附件