依賴注入之Dagger2框架在工程中的使用

2021-10-04 01:10:35 字數 933 閱讀 9027

在介紹dagger2之前,了解一下使用dagger2的背景:

一般情況下,例項man包含到例項car,則例項man依賴例項car。如下圖1:

這種直接依賴的情況存在不好的情況,若car建構函式變化,則需要直接修改man類。

使用依賴注入用於實現控制反轉的常用方式。控制反轉的基本思想是:借助「第三方」實現具有依賴關係的物件之間的解耦。一開始是物件 a 對 物件 b 有個依賴,物件 a 主動地建立 物件 b,物件 a 有主動控制權,實現了 ioc 後,物件 a 依賴於 ioc 容器,物件 a 被動地接受容器提供的物件 b 例項,由主動變為被動,因此稱為控制反轉。很簡單的說就是,本來man直接依賴car的,現在man不想被car完全綁住,所以它希望有個中介接入,至於這個中介(ioc)怎麼處理得到的car不是它關心的,它只希望需要的時候這個中介(ioc)能返回它需要的就行。而dagger2就是處理這個事情,如module提供了建立car例項的能力。

某某寶工程中,確定了公共的全域性性例項,這些例項包括環境配置例項(enviromentconfiguration)、網路請求例項(okhttpclient)等。如下圖所示。

工程中圖2的依賴注入loc容器,對應的抽象依賴關係如圖3所示:activity1、activity2、activity3共同依賴commoninstance、fragment1、fragment2的例項依賴activity1,其他的一樣。則使用dagger框架進行依賴注入的時候,相關的component關係就形如下圖所示。

依賴注入之Dagger2學習總結

一直認為,任何框架和理論的誕生,一定是為了解決某種特定或者一類共性的場景,沒有任何場景做依託的框架是沒有價值的。同理,在專案進行技術選型,框架選擇的時候,所選的框架一定是滿足使用場景中最方便的框架 請原諒沒有使用最佳這個詞,每個人對於場景的理解不同,且同一種程式設計思想,能有多種框架選擇,很難說那個...

Dagger2依賴注入框架的使用簡介

配置apt外掛程式 在build.gradle project 中新增如下 dependencies 新增如下 應用apt外掛程式 com.neenbedankt.android apt dependencies 別忘了加入lint warning android public class main...

Android框架 dagger2知識點補缺

1.scope機制可以使得在scope存在時保持類的單例 2.沒有指定作用域的 provides方法會在每次注入的時候都建立新的物件 3.乙個沒有scope的元件component不可以依賴乙個有scope的元件component,子元件和父元件的scope不能相同。subcomponent註解的可...