欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Dagger2原理及使用-創(chuàng)新互聯(lián)

小伙伴們,又到周一啦,收拾好心情,準(zhǔn)備工作了嗎?

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)湘潭免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

今天跟大家一起來聊一聊Dagger2

Dagger2原理及使用

git地址:https://github.com/google/dagger

Dagger,起源于Square的Dagger,Dagger2是由谷歌接手開發(fā);

它是一個完全在編譯期間進(jìn)行的依賴注入框架,完全去除了反射;

Dagger2通過依賴注入,讓我們少寫很多公式化代碼,更容易測試,降低耦合,創(chuàng)建可復(fù)用可互換的模塊;

說到依賴注入,很多小伙伴可能想到Bufferknife,那么他們之間的區(qū)別是什么呢?

Buffer knife目的為注入到view,所以能夠在非activity里面注入,也能注入到inflate的views;

而Dagger能夠注入到任何你想要的對象,只要其在module類中,或者它是構(gòu)造器。但是缺少對方法和字段的注入支持;

Buffer knife只是避免樣板代碼,findViewById,僅此而已,所以不能算是一個真正的注入。只是一個view的代言。

Dagger2的優(yōu)勢:

1、全局對象實例的簡單訪問方式:

和ButterKnife 庫定義了view,事件處理以及資源的引用一樣,Dagger2 提供全局對象引用的簡易訪問方式。聲明了單例的實例都可以使用@inject進(jìn)行訪問;

2、復(fù)雜的依賴關(guān)系只需要簡單的配置

Dagger2 會通過依賴關(guān)系并且生成易懂易分析的代碼。以前通過手寫的大量模板代碼中的對象引用將會由它給你創(chuàng)建并傳遞到相應(yīng)對象中。因此你可以更多的關(guān)注模塊中構(gòu)建的內(nèi)容而不是模塊中的對象實例的創(chuàng)建順序。

3、讓單元測試和集成測試更加方便

因為依賴關(guān)系已經(jīng)為我們獨立出來,所以我們可以輕松的抽取出不同的模塊進(jìn)行測試。

4、作用域?qū)嵗⊿coped instances)

我們不僅可以輕松的管理全局實例對象,也可以使用Dagger2中的scope定義不同的作用域

接下來,我們看看Dagger2的使用吧:

1、在app目錄下的gradle文件中加入:
Dagger2原理及使用

2、創(chuàng)建類Test01:
Dagger2原理及使用

@Inject:注解標(biāo)識,表明它需要提供依賴

3、新建Component標(biāo)注的接口
Dagger2原理及使用

@Component:依賴注入的管理類,也是連接依賴(A類)與目標(biāo)類(MainActivity類)的橋梁;

3、在以上兩個步驟完成后,需要build一下工程,會自動生成接口的實現(xiàn)類,命名為DaggerXXX.class,其中XXX為你定義接口的名字:
Dagger2原理及使用

4、最后在MainActivity中使用:
Dagger2原理及使用

假如我們使用第三方庫,不能修改源碼,無法在構(gòu)造方法中通過@Inject注解的方式提供依賴,這種情況下,我們該如何處理?

1、假如類名為Per的類為第三方庫,不能修改源碼
我們首先創(chuàng)建一個可以提供實例的類,類名如叫PerModule:
Dagger2原理及使用

@Module:通過此標(biāo)注的類,可以另一種方式提供依賴

@Provide:通過此標(biāo)注注解的方法,需要返回提供依賴的實例

2、把Module加入到Component中,即用@Component標(biāo)注的接口中:
Dagger2原理及使用

3、在MainActivity中引用與上一種操作一致。

Dagger2確實達(dá)到了模塊間的解耦,使用Dagger2可以將MVP中的V 層與P層進(jìn)一步解耦,這樣便可以提高代碼的健壯性和可維護(hù)性;

Dagger2還有很多更加強(qiáng)大的用法......

不說了,我要去啃代碼了;文中有誤請留言指出,喜歡就動動手指關(guān)注我們哦!

Dagger2原理及使用

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前文章:Dagger2原理及使用-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://chinadenli.net/article36/eoesg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站靜態(tài)網(wǎng)站企業(yè)建站網(wǎng)站設(shè)計網(wǎng)站維護(hù)網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)