Android探索之流行框架對比篇

引言

Android框架的發(fā)展的過程就是一個不斷化繁為簡的過程,大家都在研究如何正確方便高效的規(guī)范代碼瞄沙。當(dāng)然這條路也永遠(yuǎn)不會停止己沛,就像新的芽兒,隨著時間的流逝距境,每天都在長出新的枝葉申尼,每天都在成長。對于技術(shù)垫桂,每次新框架的提出都在剔除舊框架的詬病和痛點(diǎn)师幕,演變成更方便,更高效诬滩,更簡潔的新框架霹粥,然后新的框架在具體使用中又會帶來新的詬病和痛點(diǎn),反反復(fù)復(fù)碱呼,無窮盡也......從開始使用MVC到使用MVP,從MVP到MVVM,每次框架的提出都有讓我們眼前一亮的東西蒙挑,但具體使用中確還是存在很多的痛點(diǎn)宗侦,似乎一直存在一種反作用力來阻止我這樣做愚臀。但又能怎樣?新的芽兒注定會長成參天大樹矾利,技術(shù)終究只會進(jìn)步姑裂。

咳咳,上面的雞湯你們喝起來可能無味男旗,但對于自己經(jīng)歷了這么多框架的迭代后舶斧,結(jié)合自己親身的體會,那味道絕對濃厚察皇。廢話不再多說茴厉,開啟今天的精彩內(nèi)容泽台。

概述

MVC

MVC這里就不多說了,大家都熟悉的不能再熟悉了矾缓,比較古老的框架了怀酷,相信大家也都使用過;

MVC具體使用

Model:數(shù)據(jù)模型嗜闻,JavaBean

View:layout布局文件

Control:Activity蜕依,處理數(shù)據(jù)請求,業(yè)務(wù)邏輯

MVC的詬病

view和control耦合嚴(yán)重琉雳,activity中存在大量的邏輯代碼样眠,activity既是view,又是control翠肘,結(jié)構(gòu)不清晰檐束,activity中內(nèi)容太多

MVP

MVP是在MVC的基礎(chǔ)上把Control獨(dú)立出來的模型,簡化Control的內(nèi)容锯茄,這里presenter充當(dāng)中間代理的角色厢塘,view和model不直接交互,而是通過presenter

MVP的具體使用

Model:實體模型肌幽,javabean

View:Activity和layout

Presenter:View和Model通過presenter交互

MVP的詬病

粒度很難把握晚碾,使用過MVP的都知道,MVP模型需要定義比較多的接口喂急,view需要定義接口格嘁,presenter需要定義接口,以前我們使用一個activty能解決的問題廊移,現(xiàn)在要將一個activity分解成一個View糕簿,一個Preseter,一個Model狡孔,每個模塊都需要使用接口來實現(xiàn)解耦懂诗,這樣就會導(dǎo)致有時候一個activity中涉及的業(yè)務(wù)比較多,按每個業(yè)務(wù)點(diǎn)搭建MVP模型的話苗膝,會導(dǎo)致原來一個activity類能搞定的殃恒,現(xiàn)在需要擴(kuò)展成多個接口,多個類才能實現(xiàn)辱揭;粒度大的話离唐,可能結(jié)構(gòu)不清晰;粒度小的話问窃,代碼量又會比較大亥鬓;

MVP是以UI和事件為驅(qū)動的模型,數(shù)據(jù)的獲取是被動的根據(jù)UI變動的域庇,我們更希望是數(shù)據(jù)變化去更新UI嵌戈,而不是反過來覆积;

Presenter和View耦合度比較高;

Presenter類在業(yè)務(wù)比較復(fù)雜情況下熟呛,代碼量比較大技健;

MVVM

MVVM是在MVP的基礎(chǔ)上,根據(jù)谷歌提出的DateBinding方案重新設(shè)計的一個靈活高效的框架惰拱,MVVM使用ViewModel一層代替原來的Presenter層;

MVVM的使用

Model:數(shù)據(jù)模型雌贱,javaBean

View:Activty和layout

ViewModel:View和Model業(yè)務(wù)邏輯交互

MVVM的優(yōu)點(diǎn)

數(shù)據(jù)驅(qū)動

在MVVM中,數(shù)據(jù)的變化可以自動更新view偿短,不需要獲取view的引用欣孤;

耦合較低

MVP模式中View和Presenter是強(qiáng)耦合的,Presenter需要拿到View的引用昔逗,這樣當(dāng)View變動時降传,Presenter也需要變化,耦合度太高勾怒;現(xiàn)在MVVM中婆排,ViewModel只負(fù)責(zé)數(shù)據(jù)和業(yè)務(wù),View的變化笔链,ViewModel不需要關(guān)系段只,數(shù)據(jù)變化,View自動更新鉴扫,耦合度比較低赞枕;

View更新

MVVM模型中不用考慮是否在主線程中更新UI,DateBinding會負(fù)責(zé)在主線程中更新UI的坪创,我們不用擔(dān)心線程的問題炕婶,簡單的不止一點(diǎn)點(diǎn);

可重復(fù)利用

一個ViewModel就是一個數(shù)據(jù)源莱预,可以將一個ViewModel綁定到不同的View中柠掂,就可以達(dá)到更新view目的

MVVM的詬病

MVVM由于是基于google的DataBinding框架的,而DataBinding支持的綁定view還比較少依沮,因此在使用的過程中可能會遇到某些view無法使用dateBinding的情況涯贞,這點(diǎn)也是我之前沒有使用MVVM的原因

既然存在上面的問題,國內(nèi)外的大牛已經(jīng)幫我們封裝好了一套使用dateBinding的view庫悉抵,為避免重復(fù)造輪子肩狂,我們可以將它引入到我們的項目中直接使用摘完,目前我知道的已經(jīng)支持常用所有view姥饰;

總結(jié)

經(jīng)過上面對不同框架的對比,相信大家都有一個基本的了解孝治,有人會問這么多框架列粪,我們使用那個比較好呢审磁?

個人覺得,技術(shù)是在不斷進(jìn)步岂座,舊的框架最終都會被新的框架所代替态蒂,我覺得MVVM的提出解決了我們使用其他框架的很多痛點(diǎn),我覺得使用MVVM會更好點(diǎn)费什。

MVVM如何使用

篇幅原因钾恢,下一篇文章將為大家詳細(xì)介紹如何使用MVVM框架,敬請期待鸳址;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘩蚪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子稿黍,更是在濱河造成了極大的恐慌疹瘦,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巡球,死亡現(xiàn)場離奇詭異言沐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)酣栈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門险胰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矿筝,你說我怎么就攤上這事鸯乃。” “怎么了跋涣?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵缨睡,是天一觀的道長。 經(jīng)常有香客問我陈辱,道長奖年,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任沛贪,我火速辦了婚禮陋守,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘利赋。我一直安慰自己水评,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布媚送。 她就那樣靜靜地躺著中燥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪塘偎。 梳的紋絲不亂的頭發(fā)上疗涉,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天拿霉,我揣著相機(jī)與錄音,去河邊找鬼咱扣。 笑死绽淘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闹伪。 我是一名探鬼主播沪铭,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼偏瓤!你這毒婦竟也來了伦意?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤硼补,失蹤者是張志新(化名)和其女友劉穎驮肉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體已骇,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡离钝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了褪储。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卵渴。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鲤竹,靈堂內(nèi)的尸體忽然破棺而出浪读,到底是詐尸還是另有隱情,我是刑警寧澤辛藻,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布碘橘,位于F島的核電站,受9級特大地震影響吱肌,放射性物質(zhì)發(fā)生泄漏痘拆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一氮墨、第九天 我趴在偏房一處隱蔽的房頂上張望纺蛆。 院中可真熱鬧,春花似錦规揪、人聲如沸桥氏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽字支。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祥款,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工月杉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刃跛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓苛萎,卻偏偏與公主長得像桨昙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子腌歉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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