移動端開發(fā)設(shè)計模式

MVC螟深、MVP柔吼、MVVM

  • 功能模塊化 —— 內(nèi)部高聚合、模塊功能低耦合
  • 提高開發(fā)效率——視圖顯示牺陶、業(yè)務(wù)處理伟阔、數(shù)據(jù)處理
  • 提高測試效率——方便測試、定位問題

MVC

  • M(Model) ——模型層——業(yè)務(wù)邏輯/數(shù)據(jù)存儲 ——外觀類/接口訪問
  • V(View) ——視圖層——展示潔面/接收輸入 ——XML/Activity
  • C(Controller)——控制層——業(yè)務(wù)邏輯/連接M&C——Activity
                  1.- UI 變化操作 -
                2.需修改model的數(shù)據(jù)??            2.通知修改??
用戶輸入—— —— ——View —— —— —— —— ——Controller—— —— —— —— ——Model
                      ??修改通知               ??需修改的UI
                       2. --- 直接通知修改Model層的數(shù)據(jù) ---
描述:
1.view 接收用戶的輸入
2.需UI變化操作(不涉及業(yè)務(wù)的調(diào)用)即可直接與Controller交互即可
3.需要修改Model數(shù)據(jù)掰伸,即需要通過Controller才能修改的
   view層可直接更新Model的數(shù)據(jù)而不必通過Controller
4.Model層數(shù)據(jù)發(fā)生變化皱炉,若需要修改UI,則需要通過Controller對View的通知修改UI
缺點:
1.Activity 責任不分明狮鸭,十分臃腫
2.Activity 由于生命周期的功能處理承擔View層的職責(接收用戶操作合搅、加載應用布局),還需承擔Controller層的職責
3.隨著界面增多和邏輯復雜度提高歧蕉,Activity的代碼量增加灾部,更加臃腫

MVP

解決MVC的Activity臃腫問題,分離了Activity重的View層和Controller層的職責惯退,從而對Activity的代碼量進行優(yōu)化赌髓、瘦身,所以出現(xiàn)了MVP

  • M(Model) ——模型層——業(yè)務(wù)邏輯/數(shù)據(jù)儲存——外觀類/接口訪問
  • V (View) ——視圖層——View繪制/用戶交互——XML/Activity
  • P (presenter)——呈現(xiàn)層——業(yè)務(wù)邏輯/連接M&V——接口
                 需修改的Model層實例??     通知修改??
用戶輸入—— —— ——View—— —— —— ——Presenter—— —— —— ——Model
                    ??通知修改           ??需修改UI
描述:
1.View層接收用戶輸入
2.View層與Model交互必須通過Presenter
優(yōu)點:
1.低耦合催跪,通過Presenter 實現(xiàn)數(shù)據(jù)和視圖層的交互锁蠕,完全隔離了View和Model層,二者互不干涉
避免了View和Model的直接聯(lián)系懊蒸,通過Presenter實現(xiàn)兩者溝通
2.Activity代碼更加簡潔荣倾,簡化Activity的職責。僅負責UI相關(guān)操作骑丸,其余復雜的邏輯代碼提取到Presenter層

MVVM

為了更加分離Model和View層 舌仍,釋放Activity的壓力妒貌。于是出現(xiàn)了MVVM

  • M(Model) ——模型層——業(yè)務(wù)邏輯/數(shù)據(jù)儲存——外觀類/接口訪問
  • V (View) ——視圖層——View繪制/用戶交互——XML/Activity
  • VM(ViewMode)——View的數(shù)據(jù)模型和Presenter的結(jié)合體
                 修改Model層??                         通知修改??
用戶輸入—— —— ——View—— —— ——DataBinding—— —— ——ViewMode—— —— ——Model
                  ??通知修改                          ??需修改UI
優(yōu)點:
1.View層和Controller層直接耦合程度進一步降低,分離更徹底抡笼,減輕了Activity的壓力

MVC和MVP的區(qū)別

1.層及含義
MVC:V對應的是 布局文件&Activity
MVP:V對應的是Activity苏揣,簡化了Activity 的職責
2.業(yè)務(wù)邏輯處理方式
MVC:Controller
MVP:Presenter
3.View與Model的交互
MVC 直接、間接
MVP 必須經(jīng)過Presenter (完全隔離了View&Model)
4.View與業(yè)務(wù)邏輯的交互
MVC:Activity(Controller層)
MVP:接口(Presenter層)

三種模式出現(xiàn)的初衷

1.MVC
為解決程序模塊化問題推姻,于是MAVC模式出現(xiàn)了平匈,將業(yè)務(wù)邏輯、數(shù)據(jù)處理藏古、與界面顯示分離出來增炭。即形成了M、V拧晕、C層
2.MVP
在MVC模式中隙姿,M層和C層還是相互交互,隔離度不夠厂捞,同時寫到Activity使得Activity代碼臃腫输玷,于是出現(xiàn)了MVP,隔離了M層和V層直接連接靡馁,釋放了Activity的壓力
3.MVVM
為了更加分離M層和V層欲鹏,釋放Activity的壓力,于是出現(xiàn)了MVVM臭墨,使得M層和C層的耦合度更加降低赔嚎,分離了更加徹底,更加減輕了Activity的壓力

轉(zhuǎn)自:https://juejin.im/entry/5d632c296fb9a06afc254d58?utm_source=gold_browser_extension

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胧弛,一起剝皮案震驚了整個濱河市尤误,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌结缚,老刑警劉巖损晤,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掺冠,居然都是意外死亡沉馆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門德崭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斥黑,“玉大人,你說我怎么就攤上這事眉厨⌒颗” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵憾股,是天一觀的道長鹿蜀。 經(jīng)常有香客問我箕慧,道長,這世上最難降的妖魔是什么茴恰? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任颠焦,我火速辦了婚禮,結(jié)果婚禮上往枣,老公的妹妹穿的比我還像新娘伐庭。我一直安慰自己,他們只是感情好分冈,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布圾另。 她就那樣靜靜地躺著,像睡著了一般雕沉。 火紅的嫁衣襯著肌膚如雪集乔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天坡椒,我揣著相機與錄音扰路,去河邊找鬼。 笑死倔叼,一個胖子當著我的面吹牛幼衰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缀雳,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梢睛!你這毒婦竟也來了肥印?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绝葡,失蹤者是張志新(化名)和其女友劉穎深碱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藏畅,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡敷硅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了愉阎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绞蹦。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖榜旦,靈堂內(nèi)的尸體忽然破棺而出幽七,到底是詐尸還是另有隱情,我是刑警寧澤溅呢,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布澡屡,位于F島的核電站猿挚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏驶鹉。R本人自食惡果不足惜绩蜻,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望室埋。 院中可真熱鬧办绝,春花似錦、人聲如沸词顾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肉盹。三九已至昔驱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間上忍,已是汗流浹背骤肛。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窍蓝,地道東北人腋颠。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像吓笙,于是被迫代替她去往敵國和親淑玫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

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