Retrofit设计模式
序列化反序列化适配器
屏幕快照 2017-12-28 下午1.31.52.pngResult适配
屏幕快照 2017-12-28 下午1.31.40.pngCallFactory适配器
屏幕快照 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出来,丢给当前这一步,一环套一环,环的构建过程是,上一环开启下一环,最后一环不选择开启新的环而是终止,递归的过程