Pengontrol dan ViewModel berbeda dalam berbagai cara.
Di MVC Pengendali tahu tampilan, itu bisa mengubah tampilan. Ia juga tahu Model dan bisa menyebutnya. Dalam MVVM, sebuah ViewModel adalah representasi abstrak dari Tampilan dan tidak tahu UI konkret, ia membungkus Model sedemikian rupa sehingga dapat ditampilkan sesuai keinginan.
Dalam MVC klasik, pengontrol hanyalah strategi Tampilan untuk berinteraksi dengan Model. Bahkan, terkadang Controller bahkan tidak diperlukan. Di MVVM Anda tidak membutuhkannya, karena Anda dapat memiliki ViewModels berbeda untuk View yang sama jika Anda memerlukan perilaku yang berbeda. Dalam MVC Anda dapat memiliki misalnya ReadOnlyController atau AdminController untuk berkomunikasi dengan Model. Dalam MVVM Anda hanya bisa memiliki dua ViewModels dan Anda memilih yang Anda butuhkan untuk View.
Tetapi mereka memiliki beberapa kesamaan. Dalam kedua pola, View adalah pengamat . Dalam MVC klasik, view adalah pengamat model, di MVVM itu adalah pengamat ViewModel.
Kedua pola dimaksudkan untuk memberikan pemisahan kekhawatiran. MVVM terutama bertujuan untuk memberikan abstraksi dari View, sepenuhnya independen dari teknologi UI yang digunakan. MVC tidak sejauh itu. Fokus utamanya adalah pada pemisahan masalah, sehingga Anda tidak menempatkan logika bisnis (Model) ke tampilan.
Anda mungkin juga menemukan jawaban ini untuk pertanyaan serupa bermanfaat.
Akhirnya, saya harus mengatakan bahwa kedua pola itu milik keluarga yang sama. MVP, di mana MVVM adalah keturunan adalah saudara kandung MVC. Jika Anda ingin tahu lebih banyak, ikuti tautan ini ke situs web Martin Fowler , ia menjelaskan setiap detail secara terperinci.