网络模块优化方案(1)——封装网络框架
2017-07-14 16:00
246 查看
这篇文章是在去年写的,当时带领团队对旗下两款app进行了重构。由于业务需求较多,所以我们采用了两套方案同时进行:
1、业务模块:在功能迭代的同时进行重构,主要工作是代码优化、提取封装、依赖整理等。
2、基础模块:对于之前顽疾较多较重的模块进行完全重写,独立在业务之外,独立开发独立测试通过后再替换到主项目中。
其中网络模块就是重构的首要入手点,之前网络这块没有进行彻底封装,全部散落这各个activity和fragment中,后期维护扩展愈来愈困难。
所以为了实现模块化,减少模块耦合;减少重复代码,加快网络请求的开发。我们需要将网络框架进行二次封装,将业务层和网络框架进行隔离。如下图
具体做法:
(1)在网络请求进行发送(get/post)时进行封装统一处理。
这样就可以应付在所有的请求中添加同一参数、cookie、header等,或本地缓存等其他的统一处理的行为。
具体处理是将网络框架的post、get再封装一层方法,对外公开使用封装后的方法,这样就可以在封装方法层中做处理。
(2)在网络请求返回(回调)时进行统一处理后再以自定义接口回调
这样可以对所有请求返回进行统一处理,比如进行统一拦截、解析数据、处理公共数据等。并且可以在自定义的回调中添加url、请求参数等信息供业务处理。
具体处理是创建一个实例类实现网络框架自带的回调接口,所有的的网络请求都注册这个实例类回调。然后自定义一个网络回调接口,业务层发送请求时注册的是自定义的回调。最后在实例类的方法中进行统一处理后,再去调业务层注册的自定义回调。
示例代码:
1、业务模块:在功能迭代的同时进行重构,主要工作是代码优化、提取封装、依赖整理等。
2、基础模块:对于之前顽疾较多较重的模块进行完全重写,独立在业务之外,独立开发独立测试通过后再替换到主项目中。
其中网络模块就是重构的首要入手点,之前网络这块没有进行彻底封装,全部散落这各个activity和fragment中,后期维护扩展愈来愈困难。
所以为了实现模块化,减少模块耦合;减少重复代码,加快网络请求的开发。我们需要将网络框架进行二次封装,将业务层和网络框架进行隔离。如下图
具体做法:
(1)在网络请求进行发送(get/post)时进行封装统一处理。
这样就可以应付在所有的请求中添加同一参数、cookie、header等,或本地缓存等其他的统一处理的行为。
具体处理是将网络框架的post、get再封装一层方法,对外公开使用封装后的方法,这样就可以在封装方法层中做处理。
(2)在网络请求返回(回调)时进行统一处理后再以自定义接口回调
这样可以对所有请求返回进行统一处理,比如进行统一拦截、解析数据、处理公共数据等。并且可以在自定义的回调中添加url、请求参数等信息供业务处理。
具体处理是创建一个实例类实现网络框架自带的回调接口,所有的的网络请求都注册这个实例类回调。然后自定义一个网络回调接口,业务层发送请求时注册的是自定义的回调。最后在实例类的方法中进行统一处理后,再去调业务层注册的自定义回调。
示例代码:
相关文章推荐
- 优雅设计封装基于Okhttp3的网络框架(五):多线程、单例模式优化 及 volatile、构建者模式使用解析
- 仅需6步,教你轻易撕掉app开发框架的神秘面纱(4):网络模块的封装
- Java注解探究,自定义注解封装简易网络请求框架
- Android 网络本地显示图片Picasso优化封装使用
- 完整的OKhttp请求封装的网络框架
- App 组件化/模块化之路——如何封装网络请求框架
- Starling 框架性能优化方案
- 封装了okhttp的网络框架,支持大文件上传下载,上传进度...
- 网络模块的封装
- TensorFlow 深度学习框架 (2)-- 反向传播优化神经网络
- 自己动手封装图片三级缓存网络请求框架(类似imageloader)
- iOS10 优化APP首次安装网络权限提示方案
- jq框架封装学习笔记4-DOM操作模块
- 优化Oracle网络设置的方案
- 网络图片加载的封装-(从零开始搭建android框架系列(4))
- Android---Xutils3.0 网络请求框架封装(包含解析)
- 遗传算法优化神经网络小车自动寻路走出迷宫(1)基于OpenGL的基本框架
- android网络框架的封装——volley
- Android RxJava和Retrofit网络框架封装(一)
- Android基于http封装的网络请求框架