本文來(lái)源:《Android源碼設(shè)計(jì)模式》一書 ?著 何紅輝/關(guān)愛民
mvvm與mvp非常相似,唯一的區(qū)別是view和model進(jìn)行雙向綁定蚓炬,(data-bingding)松逊,兩者之間有一方發(fā)生變化則反應(yīng)到另一方上,而mvp與mvvm的主要區(qū)別是肯夏,mvp中的view更新需要通過(guò)presenter经宏,而mvvm則不需要楼咳,因?yàn)関iew和model進(jìn)行了雙向綁定,數(shù)據(jù)的修改回直接反映到view角色上烛恤,而view的修改也會(huì)導(dǎo)致數(shù)據(jù)的變更母怜,此時(shí),viewmodel的角色需要做的只是業(yè)務(wù)邏輯的處理缚柏,以及修改view或者model的狀態(tài)苹熏,mvvm的模式有點(diǎn)像listview和adapter,數(shù)據(jù)集的關(guān)系币喧,這個(gè)adapter就是viewmodel的角色轨域,她與view進(jìn)行了綁定,又與數(shù)據(jù)集進(jìn)行了綁定杀餐,當(dāng)數(shù)據(jù)集發(fā)生變化時(shí)干发,調(diào)用adapter的notifydatasetchanged之后view直接更新,他們之間沒有直接的耦合史翘。