先說說我自己的組件化架構(gòu)設(shè)計(jì)方案乐尊,請(qǐng)看下圖:
圖中可以看到,從上往下分為4層:APP殼工程划址、常規(guī)業(yè)務(wù)組件層扔嵌、基礎(chǔ)業(yè)務(wù)組件層、基礎(chǔ)功能組件層夺颤。
為了便于理解痢缎,按照從下往上的順序來講講我的分層思路。
- 基礎(chǔ)功能組件
這個(gè)層的組件都是最基礎(chǔ)的功能拂共,通常它不包含任何業(yè)務(wù)邏輯牺弄,也可以說這些組件是一些通用的工具類姻几。例如日志記錄組件宜狐,它只是提供了日志記錄的能力,你要記錄什么樣的日志蛇捌,它并不關(guān)心抚恒;例如基礎(chǔ)UI組件,它是一個(gè)全局通用的UI資源庫络拌;例如網(wǎng)絡(luò)服務(wù)組件俭驮,它封裝了網(wǎng)絡(luò)的請(qǐng)求能力。 - 基礎(chǔ)業(yè)務(wù)組件
該層組件是對(duì)一些系統(tǒng)通用的業(yè)務(wù)能力進(jìn)行封裝的組件春贸。例如公共業(yè)務(wù)組件里混萝,我封裝了BaseActivity、BaseFragment等萍恕;例如分享能力組件逸嘀,我封裝了微信、QQ允粤、微博等的分享能力崭倘,其他業(yè)務(wù)只要集成該組件就能進(jìn)行相關(guān)分享;例如共享公共數(shù)據(jù)組件类垫,我封裝了應(yīng)用可以全局訪問的數(shù)據(jù)司光,如用戶登錄信息等。 - 常規(guī)業(yè)務(wù)組件
該層的組件就是我們真正的業(yè)務(wù)組件了悉患。我們通常按照功能模塊來劃分業(yè)務(wù)組件残家,例如注冊(cè)登錄、用戶個(gè)人中心售躁、APP的首頁模塊等坞淮。這里的每個(gè)業(yè)務(wù)組件都是一個(gè)小的APP谴仙,它必須可以單獨(dú)編譯,單獨(dú)打包成APK在手機(jī)上運(yùn)行碾盐。 - 核心管理組件
主要包括路由服務(wù)組件晃跺、組件生命周期管理組件。路由主要是為了解決組件間通信問題毫玖,而組件生命周期管理主要是為了解決組件的初始化等問題掀虎。 - APP殼工程
殼工程依賴了需要集成的業(yè)務(wù)組件,它可能只有一些配置文件付枫,沒有任何代碼邏輯烹玉。根據(jù)你的需要選擇集成你的業(yè)務(wù)組件,不同的業(yè)務(wù)組件就組成了不同的APP阐滩。
組件之間必須遵循以下規(guī)則:
- 只有上層的組件才能依賴下層組件二打,不能反向依賴,否則可能會(huì)出現(xiàn)循環(huán)依賴的情況掂榔;
- 同一層之間的組件不能相互依賴继效,這也是為了組件之間的徹底解耦;
現(xiàn)在已經(jīng)有很多成熟的組件化框架了装获,比較著名的有阿里的手淘atlas框架https://github.com/alibaba/atlas瑞信,但是這些框架可能都過于復(fù)雜,上手難度高穴豫,對(duì)很多人來說并不一定好用凡简。總的說來精肃,沒有最好的架構(gòu)設(shè)計(jì)秤涩,只有合適自己的架構(gòu)設(shè)計(jì),不能為了架構(gòu)而架構(gòu)司抱。
系列文章
Android組件化開發(fā)實(shí)踐(一):為什么要進(jìn)行組件化開發(fā)筐眷?
Android組件化開發(fā)實(shí)踐(二):組件化架構(gòu)設(shè)計(jì)
Android組件化開發(fā)實(shí)踐(三):組件開發(fā)規(guī)范
Android組件化開發(fā)實(shí)踐(四):組件間通信問題
Android組件化開發(fā)實(shí)踐(五):組件生命周期管理
Android組件化開發(fā)實(shí)踐(六):老項(xiàng)目實(shí)施組件化
Android組件化開發(fā)實(shí)踐(七):開發(fā)常見問題及解決方案
Android組件化開發(fā)實(shí)踐(八):組件生命周期如何實(shí)現(xiàn)自動(dòng)注冊(cè)管理
Android組件化開發(fā)實(shí)踐(九):自定義Gradle插件
Android組件化開發(fā)實(shí)踐(十):通過Gradle插件統(tǒng)一規(guī)范