Android組件化開發(fā)實(shí)踐(二):組件化架構(gòu)設(shè)計(jì)

先說說我自己的組件化架構(gòu)設(shè)計(jì)方案乐尊,請(qǐng)看下圖:


組件化架構(gòu)設(shè)計(jì)圖

圖中可以看到,從上往下分為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ī)范

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市状植,隨后出現(xiàn)的幾起案子浊竟,更是在濱河造成了極大的恐慌,老刑警劉巖津畸,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件振定,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡肉拓,警方通過查閱死者的電腦和手機(jī)后频,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卑惜,你說我怎么就攤上這事膏执。” “怎么了露久?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵更米,是天一觀的道長。 經(jīng)常有香客問我毫痕,道長征峦,這世上最難降的妖魔是什么淹朋? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任胖替,我火速辦了婚禮嘱根,結(jié)果婚禮上煌珊,老公的妹妹穿的比我還像新娘。我一直安慰自己舞骆,他們只是感情好惜颇,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布竟块。 她就那樣靜靜地躺著缸逃,像睡著了一般针饥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上察滑,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天打厘,我揣著相機(jī)與錄音修肠,去河邊找鬼贺辰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嵌施,可吹牛的內(nèi)容都是我干的饲化。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼吗伤,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼吃靠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起足淆,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤巢块,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后巧号,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體族奢,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年丹鸿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了越走。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖廊敌,靈堂內(nèi)的尸體忽然破棺而出铜跑,到底是詐尸還是另有隱情,我是刑警寧澤骡澈,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布锅纺,位于F島的核電站,受9級(jí)特大地震影響肋殴,放射性物質(zhì)發(fā)生泄漏伞广。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一疼电、第九天 我趴在偏房一處隱蔽的房頂上張望嚼锄。 院中可真熱鬧,春花似錦蔽豺、人聲如沸区丑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沧侥。三九已至,卻和暖如春魄鸦,著一層夾襖步出監(jiān)牢的瞬間宴杀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工拾因, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旺罢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓绢记,卻偏偏與公主長得像扁达,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蠢熄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,525評(píng)論 25 707
  • 用兩張圖告訴你跪解,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,693評(píng)論 2 59
  • Android組件化項(xiàng)目地址:Android組件化項(xiàng)目AndroidModulePattern Android組件...
    半灬邊灬天閱讀 2,915評(píng)論 4 37
  • 下定決心要過一個(gè)不一樣的五一签孔。出去活動(dòng)活動(dòng)吧叉讥,老待在家里都快要發(fā)霉啦! 得到老爸的準(zhǔn)許和支持讓我很開心饥追,想當(dāng)初在老...
    亦戈夢(mèng)閱讀 264評(píng)論 1 2
  • 暑假生活已經(jīng)開始了判耕,今年的夏季特別涼爽透绩,因?yàn)橛晁唷?今年的生活特別簡(jiǎn)單安逸,農(nóng)村生活總是與小動(dòng)物,各種植物帚豪,純...
    微微致誠閱讀 200評(píng)論 0 0