Retrofit中的设计模式

142 阅读1分钟

前言

每次看Retrofit感觉都不一样,总结以下它所使用的设计模式吧,反正后续会写设计模式的文章。

正文

1、构建者模式

  • Retrofit实例化的过程就用了Builder类构架,当构造函数的参数大于4个,而且可选,那么用这个是很不错的选择。

image.png

2、工厂模式

  • Retrofit 创建时的callFactory, 使用工厂方法设计模式, 但是似乎并不打算支持其他的工厂。 image.png

3、外观模式

只用retrofit,统一的调用创建网络请求接 口 实例和网络请求参数配置的方法

4、动态代理

CommonService commonService = mRetrofit.create(CommonService.class);//CommonServiceProxy

image.png

5、策略模式

使用 了策略模式对serviceMethod对象进行网络请求参数配置, 即通过解析网络请求接 口 方法的参数、 返回值和注解类型,从 Retrofit对象中获取对应的网络的url地址、 网络请求执行器、 网络请求适配器和数据转换器

6、装饰者模式

设计模式(1)-装饰者设计模式 - 掘金 (juejin.cn) ExecuteCallBack 使用装饰者模式来封装callbackExecutor, 用于完成线程的切换

7、静态代理

ExecutorCallbackCall 使用静态代理(委托) 代理了Call进行网络请求

8、适配器模式

  • ExecutorCallbackCall 的被初始化是在ExecutorCallAdapterFactory里面通过适配器模式被创建的。
  • CallAdapter采用 了适配器模式 为创建访问Call接 口 提供服务。 默认不添加Rxjava则使用默认的 ExecutorCallAdapterFactory 将okhttp3.call转变成为 retroift中 的call, 如果有Rxjava则将okhttp3.call转化为abservable。