Android模塊化設計方案模型圖

最近在重構(gòu)公司的一個項目屡穗,準備把項目進行模塊化,順便記錄一下在重構(gòu)過程中的一些感想枣氧。 ?

Android模塊化設計方案系列文章:

Android模塊化設計方案模型圖

Android模塊化設計方案之接口API化

Android發(fā)展到現(xiàn)在擒权,關于各種模塊化開發(fā)的文章不勝枚舉缚陷,盡管有很多珠玉在前,但我還想記錄一下我對模塊化開發(fā)的的一些想法铁坎,算是對自己學習過程的一個總結(jié)和肯定蜂奸。

關于模塊化開發(fā)的優(yōu)勢,網(wǎng)上有很多介紹硬萍,這里就不再贅述了扩所,直接上圖。

上圖是我對模塊化設計的一個觀點襟铭,下面解釋一下各個模塊的意義:

Android組件化模型圖

實線箭頭:依賴關系

虛線箭頭:派生關系

App ①碌奉、App ②:這兩個最頂層的模塊就是我們打包app時候的殼工程短曾,模塊中不包含具體的業(yè)務邏輯。

ModuleA赐劣、ModuleB...:把項目主體功能拆分成的能各自獨立運行的模塊嫉拐,比如購物城功能、用戶信息管理等魁兼,這些模塊之間關聯(lián)不是那么緊密婉徘,在協(xié)作開發(fā)過程中,也往往不是同一個人負責咐汞,拆分成不同的模塊也能在協(xié)作開發(fā)的過程中盖呼,把相互間的干擾降到最低,提高協(xié)作開發(fā)的效率化撕。

Router:路由組件几晤,無需贅言。

ApiA植阴、ApiB...:對應的ModuleA蟹瘾、ModuleB中對外暴露出的接口、實體類掠手、路由表等憾朴。在我們開發(fā)過程中,雖然盡最大可能的避免模塊間的耦合喷鸽,但是夸模塊的調(diào)用始終無法避免众雷,為了解決需要跨模塊調(diào)用的接口、實體類等下沉到Common中導致Common臃腫的問題做祝,通過對類的api化砾省,從module中派生出對應的api模塊,提供給其他模塊依賴剖淀。

Business Common:與項目相關的基礎依賴庫纯蛾,主要用于存放模塊間共享的資源,比如TitleBar纵隔,NavigateBar等翻诉,這些widget或者資源文件與我們的業(yè)務息息相關,又在多個模塊中需要使用捌刮,于是用單獨的模塊進行管理碰煌。

ThridLibs:第三方類庫我們在開發(fā)過程中不可避免的會使用到第三方類庫,比如分享绅作,地圖芦圾,編解碼等模塊,這些模塊的核心功能與業(yè)務關聯(lián)不大俄认,因此我們在對三方類庫進行封裝之后放入單獨的模塊个少,并把需要暴露的方法抽象成接口洪乍,供上層模塊調(diào)用。

ThridLibs Proxy:第三方類庫的代理模塊夜焦,是為了避免直接使用三方類庫壳澳,對上面的那個模塊抽象出來的接口進行動態(tài)/靜態(tài)代理,方便我們以后敏捷的對三方類庫進行更改茫经。

Base Common:與業(yè)務無關的基礎模塊巷波,比如我們封裝的BaseActivity、BaseFragment等卸伞,我們可以把這個類庫用到其他的項目中抹镊,也是我們在開發(fā)中的基礎沉淀。

Utils:這個模塊比較簡單荤傲,就是日常中用到的一些工具類垮耳,比如FileUtil、AppUtil等遂黍。

這些module可以Git子模塊的形式存在于住項目之中的(還不了解子模塊的同學請進傳送門:Git子模塊)氨菇,或者對于一些不會頻繁維護的模塊,直接打包成aar上傳到maven倉庫也是可以的妓湘。

子模塊的簡單介紹:Git支持在主倉庫中引用其它獨立倉庫,這些在倉庫中引入的其它倉庫被稱為子模塊乌询。子模塊同正常的GIt倉庫一樣榜贴,能夠獨立的進行版本維護,而主倉庫只需要索引子模塊commit的MD5值妹田,不用維護子模塊的文件唬党,對降低項目耦合度是一個非常不錯的手段。

凡是有利就有弊鬼佣,模塊化開發(fā)雖然能夠?qū)㈨椖拷怦畛刹煌哪K驶拱,但是也有一些明顯的弊端:

其一、項目的維護成本增加晶衷。原本一個倉庫就能解決的事情蓝纲,現(xiàn)在要細分到多個倉庫,越是細小顆粒度的模塊化晌纫,維護成本越高税迷。在小團隊甚至個人開發(fā)的時候,是否采用模塊化的開發(fā)方案是一個需要慎重考慮的問題锹漱。

其二箭养、跨模塊依賴變得復雜。因為同級模塊之間不直接進行依賴哥牍,所以跨模塊調(diào)用的問題比單一模塊要復雜上許多毕泌。

歡迎點贊關注~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喝检,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子撼泛,更是在濱河造成了極大的恐慌挠说,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坎弯,死亡現(xiàn)場離奇詭異纺涤,居然都是意外死亡,警方通過查閱死者的電腦和手機抠忘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門撩炊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人崎脉,你說我怎么就攤上這事拧咳。” “怎么了囚灼?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵骆膝,是天一觀的道長。 經(jīng)常有香客問我灶体,道長阅签,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任蝎抽,我火速辦了婚禮政钟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘樟结。我一直安慰自己养交,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布瓢宦。 她就那樣靜靜地躺著碎连,像睡著了一般。 火紅的嫁衣襯著肌膚如雪驮履。 梳的紋絲不亂的頭發(fā)上鱼辙,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音疲吸,去河邊找鬼座每。 笑死,一個胖子當著我的面吹牛摘悴,可吹牛的內(nèi)容都是我干的峭梳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼葱椭!你這毒婦竟也來了捂寿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤孵运,失蹤者是張志新(化名)和其女友劉穎秦陋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體治笨,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡驳概,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了旷赖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顺又。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖等孵,靈堂內(nèi)的尸體忽然破棺而出稚照,到底是詐尸還是另有隱情,我是刑警寧澤俯萌,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布果录,位于F島的核電站,受9級特大地震影響咐熙,放射性物質(zhì)發(fā)生泄漏弱恒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一棋恼、第九天 我趴在偏房一處隱蔽的房頂上張望斤彼。 院中可真熱鬧,春花似錦蘸泻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至去团,卻和暖如春抡诞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背土陪。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工昼汗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鬼雀。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓顷窒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鞋吉,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容