Retrofit设计模式

Retrofit设计模式_第1张图片
设计模式:创建、结构、行为

序列化反序列化适配器

Retrofit设计模式_第2张图片
屏幕快照 2017-12-28 下午1.31.52.png

Result适配

Retrofit设计模式_第3张图片
屏幕快照 2017-12-28 下午1.31.40.png

CallFactory适配器

Retrofit设计模式_第4张图片
屏幕快照 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设计模式)