dagger2 讓你愛不釋手 終結篇

2021-07-25 12:09:52 字數 1537 閱讀 5810

前言

《dagger2讓你愛不釋手:基礎依賴注入框架篇》

《dagger2讓你愛不釋手:重點概念講解、融合篇》

因此我將結合這2點來進行本文的講解。並且會有具體的sample。

咱們直奔主題:

增加開發效率、省去重複的簡單體力勞動

首先new乙個例項的過程是乙個重複的簡單體力勞動,dagger2完全可以把new乙個例項的工作做了,因此我們把主要精力集中在關鍵業務上、同時也能增加開發效率上。

省去寫單例的方法,並且也不需要擔心自己寫的單例方法是否執行緒安全,自己寫的單例是懶漢模式還是餓漢模式。因為dagger2都可以把這些工作做了。

更好的管理類例項

每個頁面對應自己的component,頁面component管理著自己頁面所依賴的所有類例項。解耦

我們用了dagger2後。

假如是通過用inject註解標註的建構函式建立類例項,則即使建構函式變的天花亂墜,我們基本上都不需要修改任何**。

假如是通過工廠模式module建立類例項,module其實就是把new類例項的**封裝起來,這樣即使類的建構函式發生變化,只需要修改module即可。

有個網友問過乙個這樣的問題,module的建構函式也會發生變化,發生變化後,相應的new module的類也發生變化,這就沒有達到解耦的效果。首先解耦不是說讓類之間或模組之間真的一點關係都沒有了,解耦達到的目的是讓乙個類或乙個模組對與自己有關聯的類或模組的影響降到最低,不是說這種影響就完全沒有了,這是不可能的。

解耦還有個好處,就是方便測試,若需要替換為網路測試類,只需要修改相應的module即可。

12

3

4

5

6

7

8 步驟

1:查詢

module中是否存在建立該類的方法。

步驟 2:若存在建立類方法,檢視該方法是否存在引數

步驟 2.1:若存在引數,則按從

**步驟 1

**開始依次初始化每個引數

步驟 2.2:若不存在引數,則直接初始化該類例項,一次依賴注入到此結束

步驟 3:若不存在建立類方法,則查詢

inject註解的建構函式,

看建構函式是否存在引數

步驟 3.1:若存在引數,則從

**步驟 1

**開始依次初始化每個引數

步驟 3.2:若不存在引數,則直接初始化該類例項,一次依賴注入到此結束

下面在說下注意的幾點

多個頁面可以共享乙個component

不是說component就一定要對應乙個或多個module,component也可以不包含module

自定義scope註解最好使用上,雖然不使用也是可以讓專案執行起來的,但是加上好處多多。

好了關於dagger2的所有的概念知識點到此終於結束了,希望能幫助大家,與大家共勉,有問題可以隨時與我溝通。

dagger2 sample位址

dagger2 讓你愛不釋手 終結篇

前言 dagger2讓你愛不釋手 基礎依賴注入框架篇 dagger2讓你愛不釋手 重點概念講解 融合篇 因此我將結合這2點來進行本文的講解。並且會有具體的sample。咱們直奔主題 增加開發效率 省去重複的簡單體力勞動 首先new乙個例項的過程是乙個重複的簡單體力勞動,dagger2完全可以把new...

《監控》這本書讓我愛不釋手

讀 監控 這本書有感 捧著那本嶄新的 監控 一直捨不得放手,一口氣讀了一百多頁,這個錯綜複雜的商 業諜戰故事如同一顆磁石深深地吸引著我。無論是那個 溫水煮青蛙 的經典理論,還 是那個人與風的故事,都給我留下深刻的印象,讓我的思維在時空間跳躍,一次又一次地驚呼,原來這個世界竟然是如此的複雜和繁瑣!從來...

《監控》這本書讓我愛不釋手

讀 監控 這本書有感 捧著那本嶄新的 監控 一直捨不得放手,一口氣讀了一百多頁,這個錯綜複雜的商 業諜戰故事如同一顆磁石深深地吸引著我。無論是那個 溫水煮青蛙 的經典理論,還 是那個人與風賭博的故事,都給我留下深刻的印象,讓我的思維在時空間跳躍,一次又一次地驚呼,原來這個世界竟然是如此的複雜和繁瑣!...