Dagger2是一個(gè)比較新、比較流行的依賴注入框架,關(guān)于依賴注入這里就不解釋了,百度一大推。這里也不解釋Dagger2的環(huán)境配置和粗淺的使用方式。
MVP是google官方推薦使用應(yīng)用技術(shù)框架,它將之前Activity(Fragment)里面的邏輯分離出來,使用PResenter連接邏輯和界面顯示,可以百度一下使用方法,這里也不詳述。
本文主要講解一下Dagger2和MVP的配合,通過講解一個(gè)簡單的例子,來描述一下在項(xiàng)目中應(yīng)該如何去處理MVP邏輯和在哪里進(jìn)行Dagger2的注入,包、類應(yīng)該如何排版,關(guān)系應(yīng)該如何處理,這樣在以后的維護(hù)中提供最大化的簡明快捷。
(注:此方式只是我個(gè)人認(rèn)為比較舒適的、邏輯區(qū)分比較分明的方式,僅供參考)
請先下載項(xiàng)目的源代碼,沒有上傳配置文件,只有源碼,所以dagger2、OkHttp和Retrofit的配置就自己動手了!
框架簡介:該Demo使用的是MVP框架,外加依賴注入,為了Demo的普遍性,使用OkHttp、Retrofit進(jìn)行網(wǎng)絡(luò)請求。我們大家都知道,使用MVP或者Dagger,或者任何一個(gè)趨于成熟的技術(shù)框架,都是為了某一個(gè)目的而會在開發(fā)期間添加一些額外的工作量,這都是為了日后的維護(hù)工作能夠更好進(jìn)行,減少維護(hù)成本,加快開發(fā)節(jié)奏!MVP和Dagger都是為了解耦而產(chǎn)生的,解耦的手段就是新增一些輔助文件,或按功能、或按模塊、或按邏輯的進(jìn)行更細(xì)致的劃分,劃分的更細(xì),新增的java源文件也就更多了,所以我們打開下載的項(xiàng)目源碼,就可以看到,里面的分包有很多,其實(shí)這個(gè)Demo就只有三個(gè)界面,每個(gè)界面只有兩個(gè)控件,點(diǎn)擊事件要么就是顯示一行文本,要么就是模擬網(wǎng)絡(luò)請求得到一串字符串,很簡單的功能,但當(dāng)你學(xué)會MVP、Dagger之后,再去看項(xiàng)目中的代碼,你會發(fā)現(xiàn),如果新增、刪除一些需求,你可以很快的定位到某個(gè)文件夾下面的某個(gè)文件,甚至某行代碼都可以。
說了這么多,進(jìn)入正題,請看下面的分析:
首先總體分析項(xiàng)目中的包,大致的類、父類的關(guān)系,總包“test.zyj.com.study”下面,分別有activity、model、other、utils,根據(jù)名稱就知道每個(gè)包下面是干什么的,看同級下面的類,一個(gè)應(yīng)用的application類,兩個(gè)MVP中P、V基類接口,然后還有一個(gè)Dagger中的Module類,清晰明了。很多一些大的項(xiàng)目,其文件結(jié)構(gòu)也和這個(gè)差不多,很多都是在Applicatin同級下面會有一些基類接口,其作用定義為為整個(gè)應(yīng)用提供某些對象或者功能:

每一個(gè)界面,我們都當(dāng)它是一個(gè)單獨(dú)的模塊,模塊中間的通信,我們通過參數(shù)進(jìn)行傳遞
可以看一下activity下面的類:
三個(gè)包,oneActivity、secondActivity和threeActivity,可以看到應(yīng)用只包含三個(gè)界面。
數(shù)據(jù)模塊,數(shù)據(jù)模塊主要包含網(wǎng)絡(luò)請求、實(shí)體對象,里面包含了應(yīng)用所有需要的數(shù)據(jù)來源。也是按照模塊功能進(jìn)行區(qū)分的!
剩下來就是一些其它附加功能的類了,沒什么好說的,可以直接看代碼!
項(xiàng)目的總體結(jié)構(gòu)大致如上了,我們在心中有了一個(gè)大概的了解,然后接下來仔細(xì)分析里面的分層處理,解耦處理了!
源碼下載
詳細(xì)的Dagger2+MVP融合,一行一行分析,一點(diǎn)一點(diǎn)進(jìn)步,之二
詳細(xì)的Dagger2+MVP融合,一行一行分析,一點(diǎn)一點(diǎn)進(jìn)步,之三
詳細(xì)的Dagger2+MVP融合,一行一行分析,一點(diǎn)一點(diǎn)進(jìn)步,之四
新聞熱點(diǎn)
疑難解答