一文搞懂三大經典的應用架構(mvc mvp mvvm)

1、什麼是MVC架構?

2、什麼是MVP架構?

3、什麼是MVVM架構?

4、Android推薦的MVVM架構實現?

1、什麼是MVC架構?

  • MVC (Model-View-Controller):M是指邏輯模型,V是指視圖模型,C則是控制器。
  • 使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式,而C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新,這與《設計模式》中的觀察者模式是完全一樣。

MVC架構示意圖:

一文搞懂三大經典的應用架構(mvc mvp mvvm)

mvc

1.1 為何用MVC?

  • 從用戶的角度出發,用戶可以根據自己的需求,選擇自己合適的瀏覽數據的方式。
  • 從開發者的角度,MVC把應用程序的邏輯層與界面是完全分開的,這樣,界面設計人員可以直接參與到界面開發,程序員就可以把精力放在邏輯層上。而不是像以前那樣,設計人員把所有的材料交給開發人員,由開發人員來實現界面。


1.2 Android中的MVC

  • 視圖層(View):一般採用XML文件進行界面的描述,使用的時候可以非常方便的引入。
  • 控制層(Controller):Android的控制層通常是在Acitvity中實現。
  • 模型層(Model):對數據庫的操作、對網絡等的操作都應該在Model裡面處理,當然對業務計算等操作也是必須放在的該層的。


2、什麼是MVP架構?

  • MVP (Model-View-Presenter):MVP其實是由MVC演變而來的,其中的M依然是指邏輯模型,V依然是指視圖模型,而P(中間橋樑)則代替了C成為了邏輯控制器的角色。

MVP架構示意圖:

一文搞懂三大經典的應用架構(mvc mvp mvvm)

mvp

2.1 MVC和MVP區別

  • MVP中View並不直接使用Model,它們之間的通信是通過Presenter (MVC中的Controller)來進行的,所有的交互都發生在Presenter內部;
  • MVC中View會直接從Model中讀取數據而不是通過 Controller。我們知道在MVC裡,View是可以直接訪問Model的。從而,View裡會包含Model信息,不可避免的還要包括一些業務邏輯。
  • 在MVC模型裡,更關注的Model的不變,而同時有多個對Model的不同顯示,即View。所以,在MVC模型裡,Model不依賴於View,但是View是依賴於Model的。


2.2 MVP的優缺點

MVP優點:

  • 1、模型與視圖完全分離,我們可以修改視圖而不影響模型 ;
  • 2、可以更高效地使用模型,因為所有的交互都發生在一個地方——Presenter內部 ;
  • 3、我們可以將一個Presenter用於多個視圖,而不需要改變Presenter的邏輯。這個特性非常的有用,因為視圖的變化總是比模型的變化頻繁。
  • 4、如果我們把邏輯放在Presenter中,那麼我們就可以脫離用戶接口來測試這些邏輯(單元測試)

MVP缺點:

  • 1、由於對視圖的渲染放在了Presenter中,所以視圖和Presenter的交互會過於頻繁。
  • 2、還有一點需要明白,如果Presenter過多地渲染了視圖,往往會使得它與特定的視圖的聯繫過於緊密。一旦視圖需要變更,那麼Presenter也需要變更了。


3、什麼是MVVM架構?

  • MVVM(Model-View-ViewModel):MVVM和MVP的區別其實不大,只不過是把presenter層換成了ViewModel層;再有就是View層和ViewModel層是相互綁定的關係,當我們更新ViewModel層的數據的時候,View層會相應的更新UI。

MVP架構示意圖:

一文搞懂三大經典的應用架構(mvc mvp mvvm)

mvvm


3.1 MVVM的通信方式:

  • MVP中View並不直接使用Model,它們之間的通信是通過Presenter (MVC中的Controller)來進行的,所有的交互都發生在Presenter內部;
  • MVVM它採用的是數據綁定(data-binding)方式,而且是雙向綁定:View綁定到ViewModel,然後執行一些命令在向它請求一個動作。而反過來,ViewModel跟Model通訊,告訴它更新來響應UI。


3.2 MVVM優點

MVVM模式和MVC模式一樣,主要目的是分離視圖(View)和模型(Model),有幾大優點:

  • 低耦合。視圖(View)可以獨立於Model變化和修改,一個ViewModel可以綁定到不同的”View”上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。
  • 可重用性。你可以把一些視圖邏輯放在一個ViewModel裡面,讓很多view重用這段視圖邏輯。
  • 獨立開發。開發人員可以專注於業務邏輯和數據的開發(ViewModel),設計人員可以專注於頁面設計。
  • 可測試。界面素來是比較難於測試的,而現在測試可以針對ViewModel來寫。


4、Android推薦的MVVM架構實現?

直接上圖:

一文搞懂三大經典的應用架構(mvc mvp mvvm)

android mvvm推薦

版權說明:部分內容摘自網絡,如涉及版權問題,請私信聯繫予以刪除,謝謝!


分享到:


相關文章: