Android - 剖析Retrofit(4)- 设计模式

·  阅读 852

Retrofit适用蛮多的设计模式,一起看下吧。

构建者设计模式

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Config.baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
  • 通过构建者模式构建Retrofit对象,遵循简单、灵活的思想,传入必选参数,可选参数使用默认的;后续增加必选参数,也不至于需要增加重载函数来解决;如果缺少传入必选参数,可以做报错处理,让报错点提前。

外观设计模式

public final class Retrofit {
  private final Map<Method, ServiceMethod<?>> serviceMethodCache = new ConcurrentHashMap<>();

  final okhttp3.Call.Factory callFactory;
  final HttpUrl baseUrl;
  final List<Converter.Factory> converterFactories;
  final List<CallAdapter.Factory> callAdapterFactories;
  final @Nullable Executor callbackExecutor;
  final boolean validateEagerly;
  • Retrofit其实是封装了ServiceMethod缓存、执行引擎、基地址、结果解析器、回调执行器、返回值适配器多个子模块,对于使用者来说,只需要关注Retrofit即可,隐藏不必要的逻辑处理以及遵循最少知识原则。

代理设计模式

  • 动态代理
  • Retrofit通过动态搭理生成代理对象,对所有的请求做统一的封装、处理(参数、注解、参数值);
  • 静态代理

juejin.cn/post/709529… 这篇文章分析了Retrofit发起请求的过程,里面提到ExecutorCallbackCall代理OkHttpCall,后者代理okhttp3.Call完成发起网络请求;每一层代理都有自己的作用,起到了很好的功能增强,对于调用者来说,只管发起请求监听结果即可。

分类:
Android
标签:
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改