Android之MVC、MVP、MVVM(Data Binding)
本文旨在記錄最近總結的Android客戶端架構,作為學習筆記,歡迎批評指正。
一、概述
MVC:Model - View - Controller
MVP: Model - View - Presenter
MVVC:Model - View - ViewModel
二、發展過程
MVC
Model:業務邏輯和實體模型;
View:佈局檔案;
Controller:Activity;
在Android中View對應的各種Layout佈局檔案,不像Web端那樣強大,處理能力有限。因此,很多對UI的操作都在Activity(Controller)中進行,加上Activity本身的工作(派發事件,根據事件呼叫Model層資料),使得Controller的任務十分繁重,程式碼冗長複雜,不易維護。
為了使View和Controller的界限分明,又出現了MVP的設計模式。
MVP
Model:業務邏輯和實體模型;
View:佈局檔案、Activity;
Presenter:連線View和Model;
MVP不同於MVC的最重要一點:View和Model徹底分離;
MVP的出現時View和Model的耦合度降低,簡化了Activity的工作。
Presenter和另外兩層的互動是通過定義好的介面協議進行的,每個Presenter可能包含一個或者多個介面,使得View或Model改變的時候,Presenter不需要改變,程式碼複用性高。
我們可以使用測試用的View,對Presenter進行測試,方便了單元測試
MVP更適合快速迭代開發。
MVVM
Model:業務邏輯和實體模型;
View:佈局檔案和Activity;
ViewModel:連線View和Model;
ViewModel通過Data Binding
和View進行雙向互動,每一方的變化都會在另一方體現出來。
Data Binding
Data Binding庫不僅靈活而且廣泛相容- 它是一個support庫,因此你可以在所有的Android平臺最低能到Android 2.1(API等級7+)上使用它。目前,Data Binding還不成熟,學習可用。用興趣的同學可參考這兩篇文章:
還有兩個MVP的例子: