淺談Android中的mvc,mvp,mvvm
一,MVC
mvc的即model資料模型層,view檢視層,controller控制層;
view層主要是xml佈局檔案,model層主要是資料模型,controller層主要說的是Activity.
mvc的簡單流程:
view層向controller層發出指令到controller層,
controller通知model層去更新資料,
model層資料更新之後,直接將資料顯示在view層.
這就是mvc的工作原理
mvc的優點:
如果邏輯非常簡單,mvc還是一個非常不錯的選擇,因為會降低程式碼量.
mvc的缺點:
view層的控制能力太弱,如果我們想動態改變一個頁面的背景,或動態顯示/隱藏一個按鈕,這些都沒辦法在xml檔案中直接定義,需要在Activity中進行動態設定,這時,Activity既是controller層,又是view層,會造成Activity中的程式碼量過於臃腫,雜亂.
view層和model層是可以直接互動的,證明view層和model層存在耦合性,這對於程式碼的維護性和擴充套件性是非常不利的.
二,MVP
mvp是對mvc模式的升級,mvp中的model層主要是關於資料的處理,一般進行資料載入和資料儲存,而Activity,Fragment變為view層,並且view層和model層所有的互動都是通過presenter中間代理人層進行的.從而使view層和model層進行完全解耦.
mvp的簡單流程:
view層通過呼叫Presenter層介面的方式將業務邏輯轉交給Presenter層,
然後Presenter層通過呼叫model層的介面得到相應的資料,
最後Presenter層通過回撥view層介面的方式將資料回傳給view層.
這樣view層和model層就完全解耦了,同時將Activity中業務邏輯從view層抽取到Presenter中,使Activity中的邏輯更清晰.
優點:
將view層和model層完全解耦
將view層的邏輯抽取到Presenter層中,使view層更專一
缺點:
當專案比較複雜時,MVP框架能使專案更清晰,簡化了功能擴充套件的操作,以及更明瞭的程式碼維護.但如果專案邏輯比較簡單時,就會使程式碼顯的複雜,有殺雞用牛刀的感覺.
三,MVVM
和MVP的結構非常相似,viewmodel層的主要作用是將model層的資料轉為view層所需要的格式,在Android中主要是通過data binding 的形式去實現.
mvvm的簡單流程:
在MVVM中,View層和Model層進行了雙向繫結(即Data Binding),所以Model資料的更改會表現在View上,反之亦然。ViewModel就是用來根據具體情況處理View或Model的變化。
優點:
擁有MVP的優點
缺點:
需要熟悉databindig框架,學習成本高,但是還是建議大家花時間研究一下.
相關文章
- 淺談MVC/MVP/MVVM模式(概述)MVCMVPMVVM模式
- 淺談框架模式 MVC、MVP 和 MVVM框架模式MVCMVPMVVM
- 雜談: MVC/MVP/MVVMMVCMVPMVVM
- iOS架構淺談從 MVC、MVP 到 MVVMiOS架構MVCMVPMVVM
- 談談對MVC、MVP和MVVM的理解?MVCMVPMVVM
- 淺析前端開發中的 MVC/MVP/MVVM 模式前端MVCMVPMVVM模式
- MVC、MVP、MVVM,談談我對Android應用架構的理解MVCMVPMVVMAndroid應用架構
- MVC,MVP,MVVMMVCMVPMVVM
- MVC——MVP——MVVMMVCMVPMVVM
- MVC、MVP、MVVMMVCMVPMVVM
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- iOS底層原理 MVC、MVP、MVVM、分層設計淺談 — (13)iOSMVCMVPMVVM
- MVC和MVVM,MVPMVCMVVMMVP
- android MVC && MVP && MVVM分析和對比AndroidMVCMVPMVVM
- MVC、MVP和MVVM的區別MVCMVPMVVM
- MVC,MVP 和 MVVM 的圖示MVCMVPMVVM
- MVC MVP 和 MVVM 的圖示MVCMVPMVVM
- 談談Android中的MVPAndroidMVP
- 深入分析MVC、MVP、MVVM、VIPERMVCMVPMVVM
- 教你認清MVC,MVP和MVVMMVCMVPMVVM
- MVC vs. MVP vs. MVVMMVCMVPMVVM
- 理解並運用MVC,MVP,MVVMMVCMVPMVVM
- Android 架構設計:MVC、MVP、MVVM和元件化Android架構MVCMVPMVVM元件化
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- 不要再問我MVC、MVP、MVVM了MVCMVPMVVM
- MVC,MVP 和 MVVM 模式如何選擇?MVCMVPMVVM模式
- MVC、MVP和MVVM以及MVA比較MVCMVPMVVM
- 淺談MVPMVP
- 架構設計的歷史·MVC·MVP·MVVM架構MVCMVPMVVM
- MVC、MVP、MVVM,我到底該怎麼選?MVCMVPMVVM
- 淺談Android開發中記憶體洩露與優化與框架模式之MVC與MVPAndroid記憶體洩露優化框架模式MVCMVP
- 淺談mvcMVC
- [譯]iOS架構模式——解密MVC、MVP、MVVM和VIPERiOS架構模式解密MVCMVPMVVM
- iOS tableView中的MVC、MVVMiOSViewMVCMVVM
- iOS架構設計:揭祕MVC, MVP, MVVM以及VIPERiOS架構MVCMVPMVVM
- iOS 架構模式–解密 MVC,MVP,MVVM以及VIPER架構iOS架構模式解密MVCMVPMVVM
- 選擇恐懼症的福音!教你認清MVC,MVP和MVVMMVCMVPMVVM
- 轉享:表現層架構模式比較:MVP(SC),MVP(PV),PM,MVVM 和 MVC架構模式MVPMVVMMVC