1. 程式人生 > >研究MVC、MVP、MVVM三種常見的設計模式

研究MVC、MVP、MVVM三種常見的設計模式

簡介

所謂的設計模式其實是一種框架結構的體呈現,目的分離應用程式的頁面展示,網路資料互動,資料呈現,隨著專案複雜度的不斷變化,新的框架也在不斷的更新迭代,從最早的MVC模式,到後面的MVP以及MVVM,均是對專案的一種重構。

MVC設計框架

這個比較簡單,適合一些中小型的專案。

關鍵字

M

Module,模型層,使用者資料管理,通常是一些 javaBean, db,sharePreference,network,圖片處理等耗時操作均應該放在該層。

V

View,檢視層,展現給使用者的檢視,是應用程式最外層的殼,比如 xml 佈局,drawable 顯示

C

controller 控制層,也叫中間層。一般指的是在四大組,接收 View 層的指令,處理相關指令,並對處理後的指令進去進一步操作,下發指令到Module層。

結構

詳細邏輯

以點選某個按鈕為例,當用戶在 View 佈局上發生事件互動的時候,View 層會下發指令到 control 層,control監聽到事件互動,並進行處理,接著 control 下發指令到 Module 層,Module 層進行資料更新後,把資料直接顯示在View上面。

優缺點

優點

  • 可維護性高,結構清晰明瞭,利於後期維護
  • 重用性高,比如多個 View 檢視可以共同依賴同一個Module 層
  • 利於專案工程化管理 由於每個層各司其職,每一個層具有鮮明的特徵

缺點

  • View 層與Module 層相互耦合,不利於後期的維護
  • View 對 Module 訪問低效率

MVP設計框架

MVP 是在作為 MVC 的一種演化,解決了 MVC 的一些問題,主要是解決 MVC 的 View 與 Module的耦合。MVP 的 Module 層是和 MVC 層是一樣,其他的層次發生了變化,看具體的解析

關鍵字

M

Module,模型層,使用者資料管理,通常是一些 javaBean, db,sharePreference,network,圖片處理等耗時操作均應該放在該層。

V

View,檢視層,一般指的是四大元件,四大元件對作為View,來完成應用程式介面的展示

P

Presenter 控制層,也叫中間層。相當於一箇中間橋樑的作用,用於解決View 層與 Module 層的耦合,一般一個 Presenter 可以對應多個 View,一個Presenter 也可以對應多個Module

聯絡

詳細邏輯

從圖中我們可以瞭解到 View 與 Module 已經完全沒有聯絡了,所有的操作均是在 Presenter 中操作的,Presenter 成了中間橋樑。於操作view層發出的事件傳遞到presenter層中,presenter 層去操作model 層,並且將資料返回給 view 層,整個過程中 view 層和 model 層完全沒有聯絡。一般在設計View 與 Presenter 的時候會採用介面的形式,來降低 Presenter 與 View 的耦合。

優缺點

優點

  • 降低View 與 Module 的耦合
  • 使View 層更加的飽滿
  • 一個Presenter 可以對應多個 View
  • 便與測試,可以脫離使用者介面來測試某些邏輯。

缺點

  • Presenter 層會存在引用View 層的東西出現空指標的問題

MVVM設計框架

MVVM 最早還是有由微軟提出來的,MVVM 和 MVP 的設計理念類似,兩則 Module 和 View 都是一樣

關鍵字

M

Module,模型層,使用者資料管理,通常是一些 javaBean, db,sharePreference,network,圖片處理等耗時操作均應該放在該層。

V

View,檢視層,一般指的是四大元件,四大元件對作為View,來完成應用程式介面的展示

M

ViewModule 控制層 ViewModule

聯絡

詳細邏輯圖

流程其實是和 MVP 基本類似,最大的區別是在 View 和 ViewModule 中,View 層和ViewModule 是相互繫結的。

優缺點

優點

  • 低耦合,View 層和 Module 層可以獨立工作
  • 在 View 層中不需要findViewById 操作,可以使用 DataBinding 完成
  • View 和 ViewModule 的雙向繫結是支援生命週期檢測的,不會存在 ViewModule 空指標的錯誤

缺點