移動(dòng)開(kāi)發(fā)中的軟件架構(gòu)

在移動(dòng)開(kāi)發(fā)領(lǐng)域鞋邑,我們往往會(huì)遇到軟件的可擴(kuò)展性诵次、可復(fù)用性以及可維護(hù)性等問(wèn)題,這就涉及到如何做好軟件的架構(gòu)設(shè)計(jì)或者重構(gòu)優(yōu)化工作枚碗。結(jié)合實(shí)踐與思考逾一,本文對(duì)其中的Android應(yīng)用軟件架構(gòu)做些梳理,首先是層次結(jié)構(gòu)劃分肮雨,其次是技術(shù)選型的考慮遵堵。

這里層次結(jié)構(gòu)的劃分,可以從橫向和縱向兩個(gè)維度來(lái)考慮怨规。

橫向上的結(jié)構(gòu)層次陌宿,主要指代碼文件目錄結(jié)構(gòu)或者與之對(duì)應(yīng)的“包”(Package)的劃分。

對(duì)于使用了MVP架構(gòu)的應(yīng)用軟件波丰,結(jié)合實(shí)現(xiàn)方案壳坪,可以分為ui、presenter掰烟、model爽蝴、server、utils等媚赖。其中ui包括各種Activity霜瘪、Fragment,以及自定義的視圖組件惧磺、布局組件等颖对。而model包括業(yè)務(wù)模型、相關(guān)數(shù)據(jù)的定義等磨隘,server負(fù)責(zé)處理軟件和服務(wù)器的通信接口實(shí)現(xiàn)缤底、JSON數(shù)據(jù)解析等工作顾患。

在ui中,還可以按照業(yè)務(wù)功能來(lái)對(duì)Activity个唧、Fragment加以進(jìn)一步的劃分江解,這樣更方便團(tuán)隊(duì)分工維護(hù)。因?yàn)闃I(yè)務(wù)功能相關(guān)的UI大都體現(xiàn)在Activity或者與之關(guān)聯(lián)的Fragment徙歼,這樣劃分比較簡(jiǎn)明直觀犁河。

縱向上的層次結(jié)構(gòu),更側(cè)重邏輯調(diào)用和依賴關(guān)系魄梯,可分為業(yè)務(wù)層和組件層桨螺。

其中業(yè)務(wù)層,用于實(shí)現(xiàn)該軟件對(duì)應(yīng)的UI界面以及相關(guān)的功能邏輯酿秸,和用戶操作灭翔、展示關(guān)聯(lián)較多,可以選擇性地使用MVP架構(gòu)來(lái)實(shí)現(xiàn)辣苏。

因?yàn)樵摷軜?gòu)會(huì)增加類的數(shù)量并且至少涉及到三個(gè)層次的邏輯調(diào)用(在業(yè)務(wù)層之內(nèi))肝箱,建議只用在業(yè)務(wù)邏輯較多、UI顯示相對(duì)復(fù)雜稀蟋,或者后續(xù)更有可能需要擴(kuò)展的地方煌张。

具體到相關(guān)實(shí)現(xiàn),又有不同的策略糊治,例如我們可以使用Activity/Fragment/Adapter等組件來(lái)封裝擴(kuò)展Presenter唱矛,規(guī)避其復(fù)雜的生命周期變化、資源/變量的初始化和釋放等操作對(duì)業(yè)務(wù)邏輯的影響井辜。也可以將Activity/Fragment作為視圖層主體绎谦,通過(guò)接口和Presenter實(shí)現(xiàn)互相調(diào)用。這里還是需要結(jié)合業(yè)務(wù)特點(diǎn)粥脚,在架構(gòu)實(shí)現(xiàn)復(fù)雜度與可讀性窃肠、可維護(hù)性之間加以權(quán)衡,選擇合適的實(shí)現(xiàn)方案刷允,滿足要求即可冤留。

組件層,主要是獨(dú)立于上述業(yè)務(wù)邏輯之外的树灶,但與之有一定關(guān)聯(lián)的功能組件纤怒,例如推送服務(wù)、圖像識(shí)別天通、社會(huì)化分享以及支付組件等泊窘,通常作為模塊組件的方式支持業(yè)務(wù)層。如果進(jìn)一步細(xì)分,組件層還可以分為功能組件和基礎(chǔ)組件層烘豹。例如網(wǎng)絡(luò)連接管理瓜贾、日志管理等組件,相對(duì)更為通用携悯,和業(yè)務(wù)邏輯的直接關(guān)聯(lián)也更少一些祭芦,可以認(rèn)為是基礎(chǔ)組件。

在架構(gòu)設(shè)計(jì)過(guò)程中憔鬼,通常還涉及到各種技術(shù)選型龟劲,這也是為了避免重復(fù)造輪子,更好地利用已有成果逊彭、提高開(kāi)發(fā)效率咸灿。例如,業(yè)務(wù)層選用MVP還是MVVM架構(gòu)侮叮?在哪些子模塊使用?組件層悼瘾,圖像異步加載使用UIL還是Picasso囊榜?網(wǎng)絡(luò)連接管理采用OkHttp還是Volley?諸如此類亥宿。

這部分涉及較多的開(kāi)源項(xiàng)目卸勺、相關(guān)組件以及第三方服務(wù)商的優(yōu)缺點(diǎn)分析,例如不同組件的性能烫扼、sdk文件體積曙求、組件的配套使用等因素,后面繼續(xù)探討映企。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末悟狱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子堰氓,更是在濱河造成了極大的恐慌挤渐,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件双絮,死亡現(xiàn)場(chǎng)離奇詭異浴麻,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)囤攀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)软免,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人焚挠,你說(shuō)我怎么就攤上這事膏萧。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵向抢,是天一觀的道長(zhǎng)认境。 經(jīng)常有香客問(wèn)我,道長(zhǎng)挟鸠,這世上最難降的妖魔是什么叉信? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮艘希,結(jié)果婚禮上硼身,老公的妹妹穿的比我還像新娘。我一直安慰自己覆享,他們只是感情好佳遂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著撒顿,像睡著了一般丑罪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凤壁,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天吩屹,我揣著相機(jī)與錄音,去河邊找鬼煤搜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛唧席,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淌哟,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼绞绒!你這毒婦竟也來(lái)了婶希?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤喻杈,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后筒饰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壁晒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年瓷们,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谬晕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出攒钳,到底是詐尸還是另有隱情,我是刑警寧澤不撑,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站姆坚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏兼呵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一萍程、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦蕉鸳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)羹蚣。三九已至,卻和暖如春乱凿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胁出。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工段审, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留全蝶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓绷落,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親砌烁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評(píng)論 25 707
  • Android App的設(shè)計(jì)架構(gòu):MVC,MVP,MVVM與架構(gòu)經(jīng)驗(yàn)談1. 架構(gòu)設(shè)計(jì)的目的1.1 通過(guò)設(shè)計(jì)使程序模...
    天空在微笑閱讀 4,143評(píng)論 1 20
  • 作者介紹馮宇飛 ,現(xiàn)任人人車Android客戶端架構(gòu)師蓄氧。 本文回顧總結(jié)了人人車公司Android客戶端的架構(gòu)演進(jìn)歷...
    passiontim閱讀 1,525評(píng)論 0 9
  • 我們的班主任姓曹,芳名為曹婷撇寞,他是全新港最最最好的老師,集美貌與才華于一身的女老師堂氯。 曹老師把我們從一年級(jí)的小...
    王煊愷閱讀 482評(píng)論 0 0
  • 花開(kāi)云之崖 花開(kāi)天之際 我在最美的時(shí)光里 錯(cuò)過(guò)了最好的你 云崖攀無(wú)望 天際通何期 我在凋零的時(shí)光里 回夢(mèng)著...
    趙群星閱讀 650評(píng)論 4 18