Android 使用抽象方法解耦第三方過度依賴問題

路由 網絡等等  使用第三方能是我們更高效的完成任務 但是過度依賴第三方也會帶來高耦合問題  
使用的不好 對以后的迭代切換框架時造成極大的麻煩 下面說一下本人的解決方案 能很好的管理第三方框架  
下面以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 這種復合框架的話
 你就能看出來是多么方便了   特此記錄一下  面向對象之封裝 
 好了 大家有好的想法 可以相互交流 一起學習進步 加我企鵝  
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,041評論 2 59
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,171評論 25 708
  • 一、簡介 在泰國舉行的谷歌開發(fā)者論壇上,谷歌為我們介紹了一個名叫Glide的圖片加載庫,作者是bumptech。這...
    天天大保建閱讀 7,778評論 2 28
  • 7.1 壓縮圖片 一、基礎知識 1、圖片的格式 jpg:最常見的圖片格式。色彩還原度比較好,可以支持適當壓縮后保持...
    AndroidMaster閱讀 2,709評論 0 13
  • 目標: 01.閱讀《終身成長》 02.更文 03.陪孩子玩 04.洗衣服 成果:未完成 評分:5分 感想: 十月第...
    文ww文閱讀 100評論 0 1

友情鏈接更多精彩內容