研究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 空指標的錯誤