前言
最近在做 Android 基礎(chǔ)架構(gòu)方面的工作创葡,所以打算寫一系列文章來整理這方面的知識创肥。我將從 0 到 1 仿網(wǎng)易云音樂搭建一個 APP 來介紹自己是怎么設計應用層架構(gòu)的。
本文主要分析了傳統(tǒng)架構(gòu)瞎访、模塊化架構(gòu)以及組件化架構(gòu)之間差別。
一吁恍、傳統(tǒng)架構(gòu)分析
下圖就是一個傳統(tǒng)架構(gòu)模式扒秸,所有的代碼都在一個工程 app module 里面,
傳統(tǒng)架構(gòu)圖.jpg
小型的項目采用這種架構(gòu)模式也沒有問題冀瓦,但是對一般項目會越來越大的時候就會開發(fā)越來越困難伴奥。
傳統(tǒng)架構(gòu)的缺點:
- 單一 app 工程,代碼量指數(shù)級膨脹翼闽,帶來一系列的問題拾徙,如:代碼合并,編譯時間感局。
- 業(yè)務邏輯尼啡,與基礎(chǔ)功能沒有做區(qū)分暂衡,緊密耦合在一起,代碼復用行為0崖瞭。
二狂巢、模塊化架構(gòu)分析
為了避免所有代碼都往一塊堆,就出現(xiàn)了模塊化架構(gòu)思想书聚,下圖是一個模塊化架構(gòu)模式唧领,
模塊化架構(gòu)圖.jpg
它是一個分層的體系結(jié)構(gòu):
其中 宿主 是一個單獨的 module,不存放任何邏輯雌续,它的作用就是對外產(chǎn)生一個 apk斩个;
下一層 業(yè)務組件 是我們的產(chǎn)品業(yè)務,每一個業(yè)務都是一個單獨的 module驯杜;
接著 基礎(chǔ)業(yè)務組件 層是我們公司所有 app 通用的一些東西受啥,它們也是獨立的 module;
再往下 功能組件 層與我們的業(yè)務邏輯沒有一點的關(guān)系艇肴,同樣每一個組件也是獨立的 module腔呜;
這個體系結(jié)構(gòu)是非常清晰,所以要迭代一個新的 app 是非吃俚浚快的核畴,因為基礎(chǔ)業(yè)務組件和功能組件都是可以復用的。
但是它也有缺點:就是業(yè)務組件之間強依賴冲九。
三谤草、組件化架構(gòu)分析
為了解決模塊化架構(gòu)中的強依賴缺點,又產(chǎn)生了組件化架構(gòu)莺奸,下面是組件化架構(gòu)模式丑孩,
組件化架構(gòu)圖.jpg
其實組件化和模塊化架構(gòu)思想差別不是很大,組件化主要是對業(yè)務組件進行解耦灭贷。
總結(jié)
本文主要介紹了一下目前三種架構(gòu)模式的區(qū)別温学,我主要是采用了組件化架構(gòu)模式進行開發(fā)的,接下來的文章將會詳細介紹是怎么搭建架構(gòu)的甚疟。
(ps:小女子不才仗岖,歡迎在評論區(qū)指出文章中不足的地方)
參考文章:
http://www.reibang.com/p/cac0beae8876
https://juejin.im/post/5b5f17976fb9a04fa775658d