Android架构那些事之第三方库的隔离(转)
来源:互联网 发布:威锋网 mac office 编辑:程序博客网 时间:2024/05/16 05:00
在进入主题之前我们先说一下app客户端为什么需要有一个好的架构。(转:android 架构第三方库隔离)
我们都知道一个好的架构会使我们的开发变得事半功倍。
设计架构的目的在于使我们的客户端易于扩展、方便单元测试、可复用。
做到使模块之间低耦合,模块内部高内聚。
我们在开发的过程中会不可避免的引用一些第三方库,比如网络请求库、图片加载库等等。就拿我们的图片加载库来说,程序中不会只有一个地方来引用到此库,可能有N个类会用到此库来显示图片。比如我们现在使用Universal-Image-Loader来展示客户端需要的图片,客户端总共有10个类使用该来显示图片。迭代了两个版本后老板突然说APP经常出现显示图片出现OOM的问题,我们需要将Universal-Image-Loader换成更高效的Picasso来显示图片。
听到这个需求我们的第一反应是”天哪,鬼知道项目里有多少个地方引用了ImageLoader库,我们得改多少代码,万一改代码的时候引发了其他的bug怎么办”。
问题来了我们应该如何避免这种“牵一发而动全身”的囧况。
好了,我们先来看下我们平常是怎么在项目中引用图片加载库的。
before.png
上图是我们大多数人的做法。那么我们怎么才能做到换了一个第三方加载库而是这四个引用类不做改动呢。
下面看下我们重新新设计之后的引用流程图
after.png
从上图我们能看到我们通过一个中间层来引用“第三方图片加载库”。这样做的好处是不管第三方图片加载库你换成Picasso还是Glide我们改变的只是这个中间层,其他的我们一行代码都不需要改动。
如果当时你是这样设计的当老板让你把Universal-Image-Loader换成Picasso时你一行代码也不用改动只需要扩展一个类就可以了。好了话不多说 我们来看代码如何设计。
我这里是使用代理模式来实现代码与图片加载库的隔离的。
首先抽象一个ImageLoader接口
我们当前是使用UniversalImageLoader来展示项目中的图片我们就建一个UniversalImageLoader类来实现上面的接口
接下来我们写一个代理类来帮我们实现图片加载的任务
当老板让我们换成Picasso来完成图片加载时 ,我们只需增加一个 PicassoImageLoader类然后将代理类中的这行代码 imageLoaderProxy = new UniversalImageLoader();换成imageLoaderProxy = new PicassoImageLoader()即可。
怎么样我们只改动一行代码就替换了一个图片加载库方便吧。
- Android架构那些事之第三方库的隔离(转)
- Android第三方库隔离之对第三方图片加载库的隔离
- 利用代理模式隔离Android第三方组件(图片加载库,网络库)
- 第三方支付那些事
- Android之项目推荐使用的第三方库
- Android之项目推荐使用的第三方库
- Android之项目推荐应用的第三方库
- Android之项目推荐使用的第三方库
- Android之项目推荐使用的第三方库
- Android之项目推荐使用的第三方库
- Android之项目推荐使用的第三方库
- Android之项目推荐使用的第三方库
- Android之项目推荐使用的第三方库
- Android之项目推荐使用的第三方库
- cocos2d-x之Android版接sdk的那些坑,第三方so文件打不进apk或者为1kb
- Android之第三方库封装
- android开发架构总结一——常用的第三方库
- 第三方集成那些事 - 吐槽篇
- TensorFlow 学习
- 【swift】点击textfield弹出日历等
- 跳跃的数字
- python 基础知识回顾篇之简单迭代和列表生成
- 使用Google Cartographer算法在Turtlebot等移动平台上跑SLAM
- Android架构那些事之第三方库的隔离(转)
- python网络编程基础socket模块
- 关于Objective C 中的nil,Nil,NULL和NSNull的理解
- shell脚本之字符串截取
- java的SSM框架整合时Tomcat循环读取错误bean重合小问题
- Arduino Uno SD卡模块 (二)读取文件
- Android 使用SeekBar时动态显示进度且随SeekBar一起移动
- RPC in node.js
- Arduino Uno SD卡模块 (三)创建文件并写入