利用ARouter實現(xiàn)的模塊化框架陡叠,可以單獨編譯運(yùn)行某個module玩郊,通過開關(guān)修改依賴關(guān)系。
模塊化最基本的特性就是獨立枉阵,降低耦合性译红。模塊之間聯(lián)系越緊密,其耦合性就越強(qiáng)兴溜,模塊的獨立性則越差侦厚。模塊間耦合高低取決于模塊間接口的復(fù)雜性耻陕、調(diào)用的方式及傳遞的信息。
在app開發(fā)過程中刨沦,最好的設(shè)計方式诗宣,就是當(dāng)依賴解除后,app依舊能正常運(yùn)行(在編譯階段)已卷,代碼是可以build的梧田,不會出錯淳蔼,只不過對應(yīng)的代碼沒有實現(xiàn)而已侧蘸。
這個框架的設(shè)計,一個是利用ARouter解決了項目間的耦合問題鹉梨,第二個是提供了模塊移除依賴后讳癌,可以獨立運(yùn)行的配置。
整個項目的框架如下圖:
這里我將模塊分為三層:
最上層是app層存皂,承接所有的業(yè)務(wù)晌坤。依賴每個業(yè)務(wù)module和接口lib_base匠抗。
第二層是業(yè)務(wù)層宁昭,根據(jù)不同的需求和業(yè)務(wù),剝離出各個module己沛。只依賴lib_base疤孕,并且實現(xiàn)接口商乎。
第三層是base層,放置各個業(yè)務(wù)暴露出來的接口祭阀,或者一些非仇钠荩基礎(chǔ)的公共類、庫等专控。
三層邏輯中抹凳,抽離的是業(yè)務(wù)層代碼,base層不作操作伦腐。所有的依賴控制赢底,都在項目的gradle.properties文件中,用isModule的值控制柏蘑。
同時在app層做好分離的build.gradle配置
在業(yè)務(wù)層module中的build.gradle配置
這里對模塊做了一點小的操作幸冻,可以使模塊在library和application之間切換。在實際項目中辩越,也可以為每個module添加獨有的變量開關(guān)嘁扼,在開發(fā)自己模塊的時候,只需先單獨module運(yùn)行黔攒,測試完畢后再接入app趁啸,最后進(jìn)行調(diào)試强缘。避免了整個工程運(yùn)行的耗時,往往工程越大不傅,項目跑一次的時間也就越久旅掂,從而節(jié)省時間,加快效率访娶。
附上github地址:https://github.com/javalue/Arouter-Module