關於Android Dagger2 應用的疑惑

時間 2021-05-06 05:44:38

1樓:

太難用了,學習了一周。本以為都會的差不多了,沒想到還是有很多問題,不僅增加了工作量,還能增加了複雜度,這都忍了,還特麼的動不動就編譯不過

2樓:studyzhxu

dagger2+mvp的使用可以看看這篇部落格Android單排上王者系列之Dagger2使用解析,至於MVP可以看看Android單排上王者系列之Android MVP解析實踐

3樓:

是的, 其實在初學很多設計模式時,比如說工廠模式時也會這樣想:「為什麼要繞個大圈, 用工廠/依賴注入來生成乙個物件 ,為什麼不直接在要用的地方new就成了?」

可是實際工作中的情況要更複雜。 一般場景中直接new確實是行的,但一些複雜的地方, 可能生成物件的方法比較靈活才符合我們需求, 這時候就要用依賴注入或其它方法(如自己寫的面向介面程式設計)

舉個例子:

我們MVP中想單獨測試P層。 但Presenter層有View的引用,也有Model的引用。

我們想要單獨測試,就得自己負責生成乙個View 。 麻煩的地方是: 我們有時候嫌正式環境下使用的View太重量, 不適合測試。

用於測試的,我們希望是乙個簡單的例項物件, 在被操作是就列印個日誌就好,不用做複雜的UI變化也行的。 public

class

Presenter

}備註:多謝 @麥景行 的說明。 確實,一般來說MVP中, P中是直接持有View的例項, 而不是new乙個View出來。我這裡僅僅是舉個類似意思的例子, 主要是這個思路。

這時我們可以用依賴注入Dagger2框架來inject這個view。

我們可以inject乙個我們自己定義的測試View, 這個測試的View就相當簡單,根本不是真正帶UI的View, 我們自己就能new出來。

總結下需求:

正式環境下,仍是要傳給Presenter乙個真正的View。

測試情況下, 要傳給Presenter乙個假的View類, 方便我們單獨測試Presenter。

這時候若是寫死了new乙個View就不行了, 得是可以在兩種情況下靈活切換的。

最後總結:

某些情況下, 寫死了的hard init不好, 而Dagger2能幫我們靈活地把耦合的new給分離出來。

類似的應用場景還有: Espresso測試中, 經常要用到假資料。但正式發布時要用伺服器上的資料,這時Dagger就可以起到這個靈活配置的作用了。

4樓:Zane

您可以看看我這篇部落格

我也是剛學習完dagger,並且在使用。不論是dagger還是mvp,都是為了模組解耦。希望您看完了可以給我提點建議!

關於大學,關於愛情?

棲梧桐 步青雲 首先這取決於你自己的想法,沒以前沒談過戀愛的話可以體驗或者嘗試一下,畢竟早點經歷是有好處的,但是也有個前提,是碰到自己心動的那個人,要是以前談過戀愛,估計也就不會提問了嘿嘿 偷個懶 現在是六月二十三日臨晨三點,作為湖北考生的我還在焦急的等著我的高考分數。這一夜的感受或許我終生難忘,也...

關於工作關於生孩子?

總有人勸你早點要孩子 關於這一點除了身材恢復,相對風險低一些之外,我看到的都是弊端。養大乙個孩子事需要太多的愛和足夠成熟的父母的,還得有能力去撫養。年輕人,你連你自己跟這個社會關係都沒處理好,連自己想要什麼都沒弄明白,你怎麼為你的孩子負責任,養自己和養孩子道路上的你的各種慌亂,掙扎,盲目,你不怕會毀...

關於友情,關於被冷落。?

簡單幸福 向來都是這樣三個好朋友總是兩個好蕭瑟別的乙個先查詢你自身的原因然後再看看她們是不是純心要蕭瑟你的如果是你自己的原因那就改正缺點仍是相同的不冷不熱的和她們做朋友如果是她們故意的那你就知趣點找到你自己的那個知己我上學的時候常常遇到像你這樣的事三個人是沒辦法很接近的做好朋友的!送杜少府之任蜀州 ...