1 前言
对框架的认知,分为三层:
第一层:会用 。了解它的功能,知道怎么调用。
第二层:知道实现 。通过研究源码,知道它怎么实现的。
第三层:理解为什么 。为什么要有这个框架?如果没有这个框架,我们如何实现它的功能以及实现的成本有多高?框架内部为什么这么设计?有没有更好的设计?
要认知到第三层,最好的方式就是先抛弃这个框架,撸起袖子自己干,从零设计一个这样的框架,最后回过头来,再去思考这个框架存在的意义,以及它内部的设计。
比如网络框架,它的基本功能是调用服务器的接口获取数据,在APP开发中,这个功能不需要依赖任何额外框架就可以轻松实现,但是在实际项目中,能满足这个基本功能是远远不够的,还有很多其他的事情需要考虑,比如线程调度、数据加工、易用性、可扩展性等。
下面我们先从零设计一个网络框架,然后再去对照okhttp和retrofit的源码,思考它们存在的意义以及它们的设计,最后我们再挖掘下okhttp和retrofit预留给我们的扩展能力,举例一些常见的应用场景。更进一步,我们再思考下它还有哪些不足,以及如何改进。
Comments