mvp簡述
-
mvp的結(jié)構(gòu)
image.png - mvp各個(gè)模塊職責(zé)
- V
保存視圖狀態(tài),包含UI的具體操作等,如刷新,旋轉(zhuǎn),展示 ,以及與用戶的交互 - m
保存數(shù)據(jù)信息,包括DB,網(wǎng)絡(luò)數(shù)據(jù)處理,以及附帶的各種其他數(shù)據(jù)操作
3.p
起到m和v的鏈接作用,一些除v和m以外的邏輯操作,實(shí)際上是一個(gè)mananger 的角色
mvvm
什么是mvvm
-
整體架構(gòu)
image.png
model
Repository及其下方就是model了。Repository負(fù)責(zé)提取和處理數(shù)據(jù)。數(shù)據(jù)來源可以是本地?cái)?shù)據(jù)庫,也可以來自網(wǎng)絡(luò),這些數(shù)據(jù)統(tǒng)一有Repository處理,對應(yīng)隱藏?cái)?shù)據(jù)來源以及獲取方式。總而言之model就是和數(shù)據(jù)以及數(shù)據(jù)操作相關(guān)的模塊ViewModel
ViewModel作為View和Model等其他模塊的鏈接件 ,viewmodel持有l(wèi)ivedata等數(shù)據(jù),viewmodel 本身也應(yīng)該有生命周期的意識 。實(shí)際上主要的邏輯都在viewmodel里view
view就是視圖層通常包含 activtiy, fragment,還包括viewdatabinding,通常由view 持有viewmodeldatabinder
databinder其實(shí)也是mvvm實(shí)現(xiàn)的關(guān)鍵。Android中的數(shù)據(jù)綁定技術(shù)由DataBinding和LiveData共同實(shí)現(xiàn)。當(dāng)Activity/Fragment接收到來自ViewModel中的新數(shù)據(jù)時(shí)(由LiveData自動通知數(shù)據(jù)的改變),將這些數(shù)據(jù)通過DataBinding綁定到ViewDataBinding中,UI將會自動刷新。