美文网首页
Android 使用抽象方法解耦第三方过度依赖问题

Android 使用抽象方法解耦第三方过度依赖问题

作者: nade_s | 来源:发表于2018-11-03 16:43 被阅读0次
路由 网络等等  使用第三方能是我们更高效的完成任务 但是过度依赖第三方也会带来高耦合问题  
使用的不好 对以后的迭代切换框架时造成极大的麻烦 下面说一下本人的解决方案 能很好的管理第三方框架  
下面以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 使用抽象方法解耦第三方过度依赖问题

  • 依赖注入利器 - Dagger ‡

    概述 在开发过程中,为了实现解耦,我们经常使用依赖注入,常见的依赖注入方式有: 构造方法注入:在构造方法中把依赖作...

  • Android LoadView,一款可以自定义动画的加载库

    LoadView android loadview是一个可以灵活自定义并且可以结合第三方动画解耦的库,使用起来也是...

  • Dagger2的实际使用

    前言 Dagger2是依赖注入的框架,网上有很多关于dagger的使用方法。好处想必大家都能知道就是解耦。 那解谁...

  • BeeHive学习总结

    设计原则: 解耦,避免对接口依赖使用invoke以及动态链接库实现对接口的解耦 BeeHive每个模块都是有生命周...

  • 消息中间件的一些思考

    1.为什么使用消息队列? 核心说起来就是:解耦、异步、削峰。 解耦:RPC的调用是强依赖的,系统之间的调用会存在耦...

  • ASP.NET CORE Dependency injectio

    Dependency injection IOC(控制反转)是啥? 借助第三方来实现依赖关系之间的解耦在原来A...

  • 谨记

    切记表驱动 切记使用数组或列表进行循环 切记功能提成方法 切记分模块 解耦 对于模块间互相依赖的 考虑好依赖变动时...

  • 依赖注入之Dagger2初探

    Dagger2 Dagger2是Google提供的依赖注入框架,依赖注入为Android中组件之间的解耦提供了很好...

  • 依赖倒置原则

    定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 解決方法:将类A修...

网友评论

      本文标题:Android 使用抽象方法解耦第三方过度依赖问题

      本文链接:https://www.haomeiwen.com/subject/zzikxqtx.html