本文來源:《Android源碼設計模式》一書 ?著 何紅輝/關愛民
mvvm與mvp非常相似,唯一的區別是view和model進行雙向綁定,(data-bingding),兩者之間有一方發生變化則反應到另一方上,而mvp與mvvm的主要區別是,mvp中的view更新需要通過presenter,而mvvm則不需要,因為view和model進行了雙向綁定,數據的修改回直接反映到view角色上,而view的修改也會導致數據的變更,此時,viewmodel的角色需要做的只是業務邏輯的處理,以及修改view或者model的狀態,mvvm的模式有點像listview和adapter,數據集的關系,這個adapter就是viewmodel的角色,她與view進行了綁定,又與數據集進行了綁定,當數據集發生變化時,調用adapter的notifydatasetchanged之后view直接更新,他們之間沒有直接的耦合。