美文网首页
Retrofit设计模式

Retrofit设计模式

作者: SMSM | 来源:发表于2017-12-28 10:41 被阅读47次
    设计模式:创建、结构、行为

    序列化反序列化适配器

    屏幕快照 2017-12-28 下午1.31.52.png

    Result适配

    屏幕快照 2017-12-28 下午1.31.40.png

    CallFactory适配器

    屏幕快照 2017-12-28 下午1.31.26.png

    设计模式

    • 观察模式 RxJava中Observer&&Observelbe

    • 装饰模式 RxJava的操作符过程

    • 工厂模式 serviceMethod.callFactory.newCall

    • 适配模式 callAdapter

    • 构建模式 Retrofit build()

    • 静态代理 OkHttpCall是Retrofit.Call 代理 Okhttp.Call

    • 动态代理 Proxy.newProxyInstance 访问Service接口时

    • 责任链模式 Okhttp的Interceptor

    • 模板模式 HashMap和LinkedHashMap

    • 外观模式 ServiceMethod对过程的精简

    Okhttp拦截器

    • BridgeInterceptor

    • Accept-Encoding为空时自动加gzip,并transparentGzip由记录,获取Response后,自动解压
      ResponseBody只可以读一次,第二次有异常if (closed) throw new IOException("Stream closed");

    • CacheInterceptor
      在new CacheStrategy.Factory(now, chain.request(), cacheCandidate).get() 内判断 是否有有效缓存(Expires、Last-Modified)。有的话,netrequest为null
      后端不支持Cache但是配置了Cache对象时,Cache大小容易导致OOM,删的条件:超出MaxSize、POST请求、后端支持Cache,存的条件是:Cache对象不为null。有两类文件,journal、httpcache文件
      所以存了大量无用信息httpcache文件,占用cache存储空间,
      在进程启动时,DiskLruCache 解析journal文件得到cachekey的列表,用于命中。

    • RealCall getResponseWithInterceptorChain
      责任链模式,把下一步提前new出来,丢给当前这一步,一环套一环,环的构建过程是,上一环开启下一环,最后一环不选择开启新的环而是终止,递归的过程

    相关文章

      网友评论

          本文标题:Retrofit设计模式

          本文链接:https://www.haomeiwen.com/subject/feumgxtx.html