MVVM Nedir?
Yayın: · Son güncelleme:
MVVM Nedir? Kısaca
MVVM (Model-View-ViewModel), arayüzü (View) veriden (Model) ayıran ve aradaki ViewModel katmanı ile veri bağlama sayesinde ekranın verideki değişiklikleri kendiliğinden göstermesini sağlayan mimari desendir.

MVVM nedir?
MVVM, Model-View-ViewModel kelimelerinin kısaltmasıdır. Microsoft'un WPF teknolojisi için geliştirilen bu desen, arayüz kodunu iş mantığından ayırmayı hedefler. Bugün Android (Jetpack), iOS (SwiftUI), Angular ve Vue gibi pek çok ortamda benzer bir yaklaşım görülür.
Üç parçanın görevleri şöyledir:
| Katman | Görevi |
|---|---|
| Model | Veri ve iş kuralları |
| View | Ekranda görünen arayüz |
| ViewModel | View'ın ihtiyaç duyduğu veriyi ve komutları hazırlar |
Veri bağlama nasıl çalışır?
MVVM'in ayırt edici özelliği veri bağlamadır (data binding). View, ViewModel'deki bir değişkene bağlanır. Değişken güncellendiğinde ekran da kendiliğinden güncellenir; kodla tek tek "şu etiketi yenile" demeniz gerekmez.
Örneğin bir hava durumu uygulamasında ViewModel'de sicaklik adlı bir alan bulunsun. Uygulama sunucudan yeni değeri, diyelim 18 derece bilgisini aldığında yalnızca bu alanı değiştirir. Ekrandaki yazı aynı anda 18 olur. Kullanıcı bir kutuya şehir adı yazdığında ise bağlama ters yönde çalışır ve değer ViewModel'e geçer.
Nelere dikkat etmeli?
ViewModel'in ekran nesnelerine doğrudan erişmemesi gerekir; aksi hâlde desenin sağladığı test kolaylığı kaybolur. Küçük bir ekran için MVVM fazla katman ekleyebilir, bu yüzden basit projelerde gereksiz karmaşıklık yaratabilir. Yeni başlıyorsanız önce MVC mantığını kavrayıp ardından bir sayaç uygulamasıyla veri bağlamayı denemek konuyu oturtur.
Sıkça Sorulan Sorular
MVVM hangi platformlarda kullanılır?
WPF ve .NET MAUI gibi Microsoft teknolojilerinde, Android'de Jetpack bileşenleriyle, iOS'ta SwiftUI ile sık kullanılır. Vue ve Angular gibi web framework'leri de benzer bir bağlama mantığı sunar.
MVVM öğrenmek için MVC bilmek gerekir mi?
Şart değildir ama MVC'yi bilmek işi kolaylaştırır. İki desen de veriyi arayüzden ayırma fikrine dayanır; farkı aradaki katmanın çalışma biçimidir.