前言
每次看Retrofit感觉都不一样,总结以下它所使用的设计模式吧,反正后续会写设计模式的文章。
正文
1、构建者模式
- Retrofit实例化的过程就用了Builder类构架,当构造函数的参数大于4个,而且可选,那么用这个是很不错的选择。
2、工厂模式
- Retrofit 创建时的callFactory, 使用工厂方法设计模式, 但是似乎并不打算支持其他的工厂。
3、外观模式
只用retrofit,统一的调用创建网络请求接 口 实例和网络请求参数配置的方法
4、动态代理
- create里其实用了动态代理,具体看我这篇设计模式(2)-动态代理-大白话版 - 掘金 (juejin.cn)
CommonService commonService = mRetrofit.create(CommonService.class);//CommonServiceProxy
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。