利用ARouter實(shí)現(xiàn)的模塊化框架,可以單獨(dú)編譯運(yùn)行某個(gè)module,通過開關(guān)修改依賴關(guān)系。
模塊化最基本的特性就是獨(dú)立,降低耦合性。模塊之間聯(lián)系越緊密,其耦合性就越強(qiáng),模塊的獨(dú)立性則越差。模塊間耦合高低取決于模塊間接口的復(fù)雜性、調(diào)用的方式及傳遞的信息。
在app開發(fā)過程中,最好的設(shè)計(jì)方式,就是當(dāng)依賴解除后,app依舊能正常運(yùn)行(在編譯階段),代碼是可以build的,不會(huì)出錯(cuò),只不過對(duì)應(yīng)的代碼沒有實(shí)現(xiàn)而已。
這個(gè)框架的設(shè)計(jì),一個(gè)是利用ARouter解決了項(xiàng)目間的耦合問題,第二個(gè)是提供了模塊移除依賴后,可以獨(dú)立運(yùn)行的配置。
整個(gè)項(xiàng)目的框架如下圖:

這里我將模塊分為三層:
最上層是app層,承接所有的業(yè)務(wù)。依賴每個(gè)業(yè)務(wù)module和接口lib_base。
第二層是業(yè)務(wù)層,根據(jù)不同的需求和業(yè)務(wù),剝離出各個(gè)module。只依賴lib_base,并且實(shí)現(xiàn)接口。
第三層是base層,放置各個(gè)業(yè)務(wù)暴露出來的接口,或者一些非?;A(chǔ)的公共類、庫(kù)等。
三層邏輯中,抽離的是業(yè)務(wù)層代碼,base層不作操作。所有的依賴控制,都在項(xiàng)目的gradle.properties文件中,用isModule的值控制。

同時(shí)在app層做好分離的build.gradle配置

在業(yè)務(wù)層module中的build.gradle配置


這里對(duì)模塊做了一點(diǎn)小的操作,可以使模塊在library和application之間切換。在實(shí)際項(xiàng)目中,也可以為每個(gè)module添加獨(dú)有的變量開關(guān),在開發(fā)自己模塊的時(shí)候,只需先單獨(dú)module運(yùn)行,測(cè)試完畢后再接入app,最后進(jìn)行調(diào)試。避免了整個(gè)工程運(yùn)行的耗時(shí),往往工程越大,項(xiàng)目跑一次的時(shí)間也就越久,從而節(jié)省時(shí)間,加快效率。
附上github地址:https://github.com/javalue/Arouter-Module