Android Mvp、Mvc、Mvvm

前段時間項目上有點忙,已經(jīng)停止更新很久了,最近有空,想把自己之前再項目中用的一些,或者學習的一些知識總結(jié)一下,哈哈,又快到年底啦??梢宰鲎鰷蕚渑?。

首先要明確了解MVP、MVC、MVVM 都是軟件的架構(gòu),然后我們再來分別了解下他們之間的優(yōu)缺點和聯(lián)系

MVC

mvc的意思是,軟件可以分為三個部分
mvc(model-view-controller)

  • modle(數(shù)據(jù)模型):數(shù)據(jù)的存儲對象
  • view(試圖): 用戶的界面(也就是我們所說的activity界面)
  • controller(控制器):業(yè)務邏輯層

各個模塊之間的聯(lián)系如下圖

mvc.png
  • view:用戶在界面操作之后,傳達指令給controller控制層
  • controller: 接收指令之后,進行相應的業(yè)務邏輯之后,得到數(shù)據(jù),傳遞給model
  • model: 在得到新的數(shù)據(jù)之后,通知view界面更新狀態(tài)

MVC優(yōu)缺點:

優(yōu)點:
講業(yè)務邏輯層都抽到controller層,模塊化程度高

缺點:
view-model-controller之間的聯(lián)系緊密,耦合性低,不利于測試和修改

MVP

mvp和mvc類似,只是將controller改為present
(model-view-present)

  • model(數(shù)據(jù)模型):數(shù)據(jù)的存儲
  • view(試圖):用戶的界面(也就是我們所說的activity界面)
  • present:主要負責view和model之間的交互

各個模塊之間的聯(lián)系如下圖:

mvp.png

中間實現(xiàn)的原理個人理解就是:

  1. activity界面實現(xiàn)一個viewInterface
  2. present對象中注入viewinterface實例
    在present中可以做任何復雜的業(yè)務邏輯操作
    處理結(jié)束之后,可以通過viewinterface,直接更改activity界面的更改

哈哈,是不是很簡單。

mvp優(yōu)點:
model層不再直接更新view層,降低了耦合性,更利于測試

MVVM

mvvm模式將mvp中present改為viewModel,基本和mvp一致

關(guān)系圖如下:

mvvm.png

關(guān)于什么是MVVM可以參考下這這篇文章

還有一個本人之前寫的databinding這篇文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容