MVVM, — шаблон проектирования архитектуры приложений. Он упрощает разделение разработки графического интерфейса (view) от разработки бизнесс-логики (model). ViewModel в данном шаблоне проектирования является промежуточным звеном, которое помогает преобразовывать данные таким образом, чтобы их было легко представлять и ими было легко манипулировать.
ViewModel берет на себя практически всю логику представления данных, View остается их только отобразить. Разница с MVP заключается в том, что в MVP слой Presenter напрямую меняет состояние View, а View напрямую меняет состояние Presenter. В MVVM же у слоя ViewModel нет никакого доступа к слою View. View сама наблюдает за тем, что меняется в ViewModel и меняет свое состояние (с помощью паттерна observer)