路由 网络等等 使用第三方能是我们更高效的完成任务 但是过度依赖第三方也会带来高耦合问题
使用的不好 对以后的迭代切换框架时造成极大的麻烦 下面说一下本人的解决方案 能很好的管理第三方框架
下面以glide为例 进行阐述
添加glide依赖 'com.github.bumptech.glide:glide:3.8.0'
glide 是一个强大的图片加载框架 他的强大功能我就不介绍了 说一下基本使用吧
加载图片
Glide.with(context) // 上下文对象
.load(imgUrl) // 图片路径/网址/
.placeholder(R.mipmap.user_head) //加载中显示
.error(R.mipmap.user_head) // 加载失败显示
.centerCrop() // 缩放类型
.into(view); // 目标试图
好久这么简单 你就完成图片显示了
开始说一下过度依赖问题 像gilde 这样简单的使用工具 一行代码 就能搞定的
你可能会直接会应用在你需要使用的地方 那就会造成在你的项目中会有很
多个这样的引用 这就造成了过度依赖问题 如果有一天要去掉glide 你只能
去一个一个的去寻找改这些引用 给你和你的同事造成极大的麻烦 为了解决
这个问题 我建议你使用封装的思想 对第三方的框架 进行二次封装 抽象管理
这些第三方框架
看代码
glide工具
public class GlideTool {
/**
* 绑定试图 ---> 可加载本地/网络/默认图片
* @param context
* @param imgUrl 图片地址 本地路径/图片网址/空
* @param view 目标试图
*/
public void BindView(Context context, @Nullable String imgUrl, ImageView view){
Glide.with(context)
.load(imgUrl)
.placeholder(R.mipmap.user_head)
.error(R.mipmap.user_head)
.centerCrop().into(view);
}
}
然后给一个工厂方法管理这个工具
public class GlideManager {
private static GlideTool glideTool;
public static synchronized GlideTool getGlideInstace(){
if (null == glideTool){
glideTool = new GlideTool();
}
return glideTool;
}
}
看一下应用
GlideManager.getGlideInstace().BindView(context,null,view); //显示默认图片
GlideManager.getGlideInstace().BindView(context,"data/nade/headimg.jpg",view);// 显示本地图片
GlideManager.getGlideInstace().BindView(context,url,view); // 显示网络图片
对比一下
Glide.with(context).load(BaseAPI.imgHost+url)
.placeholder(R.mipmap.user_head)
.error(R.mipmap.user_head)
.centerCrop()
.into(view);
相比之下 代码更简洁 也更容易控制 如果以后有需要要替换图片加载框架 直接在GlideTool中 把这个
Glide.with(context)
.load(imgUrl)
.placeholder(R.mipmap.user_head)
.error(R.mipmap.user_head)
.centerCrop().into(view);
替换掉就行了 很方便
可能说glide 这个框架看不出效果 打个比方说
如果是okhttp + retrofit + rxjava +dagger2 这种复合框架的话
你就能看出来是多么方便了 特此记录一下 面向对象之封装
好了 大家有好的想法 可以相互交流 一起学习进步 加我企鹅
Android 使用抽象方法解耦第三方过度依赖问题
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
- 一、简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫Glide的图片加载库,作者是bumptech。这...