一、介紹
1.Model(模型)
Model代表應用程序的數據和業務邏輯。它負責處理數據的獲取、存儲和更新,例如從數據庫中檢索數據或通過網絡請求獲取數據。Model通常是與UI無關的部分,因此可以獨立測試和復用。
2. View(視圖)
View是用戶界面(UI)的部分,負責展示數據并與用戶進行交互。View直接與XML布局文件相關聯。它通過監聽用戶的操作(如點擊按鈕)觸發相應的操作,但不直接處理業務邏輯。View通常會綁定ViewModel中的數據,并通過觀察者模式自動更新UI。
3. ViewModel(視圖模型)
ViewModel是連接Model和View的橋梁。它持有Model中的數據,并將這些數據暴露給View。ViewModel的主要職責是處理UI相關的數據準備工作,將數據從Model轉換為View可以直接使用的形式。同時,ViewModel還會處理一些簡單的邏輯,但不涉及UI操作。它通常使用LiveData或StateFlow等觀察者模式來監視數據的變化,當數據發生變化時,自動通知View進行更新。
二、MVVM的優勢
解耦性:Model、View和ViewModel彼此獨立,降低了模塊之間的耦合度,方便單元測試和模塊化開發。
可維護性:由于邏輯與UI分離,代碼更清晰、易于維護,降低了后期維護和擴展的成本。
數據綁定:通過使用數據綁定(DataBinding)庫或LiveData,View和ViewModel之間可以實現自動更新,減少了手動刷新UI的代碼量。?
三、MVVM配置
在Android中實現MVVM通常需要結合以下組件:
LiveData:一種可觀察的數據持有類,View可以訂閱它,當數據變化時,UI會自動更新。
ViewModel:通過ViewModel類來存儲和管理與UI相關的數據。ViewModel的生命周期與Activity或Fragment相同,可以在配置更改(如屏幕旋轉)時保留數據。
DataBinding(可選):通過數據綁定庫,將XML布局文件與ViewModel中的數據直接綁定,實現更簡潔的UI更新。
在build.gradle文件中啟用數據綁定:
android {
? ? dataBinding {
? ? ? ? enabled = true
? ? }
}
示例源碼地址:https://download.csdn.net/download/banzhuantuqiang/91133432