Hoşgeldin Misafir

Model-View-ViewModel (MVVM) Nedir, Niçin Kullanılır ve Diğer Mimarilerden Farkları Nelerdir?

TeknOnur

TeknOnur

Bütün bu olanlara dayanamam ama hazırım...
Null
1 Ara 2017
1,083 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:

Model-View-ViewModel (MVVM) Nedir, Niçin Kullanılır ve Diğer Mimarilerden Farkları Nelerdir?

g76ggi4.jpg

Model-View-ViewModel (MVVM) Nedir?

Merhaba dostumm ben TeknOnur. Lojistik Tim adına paylaşılan "Model-View-ViewModel (MVVM) Nedir, Niçin Kullanılır ve Diğer Mimarilerden Farkları Nelerdir?" konusunda sizleri görmekten çok mutluyum :)🙏
Bugün yazılım mimarisiyle ilgili belki de en çok kullanılan ama bazılarımıza hâlâ gizemli gelen bir konudan bahsedeceğim: MVVM (Model-View-ViewModel)!
Peki, bu MVVM ne işe yarıyor? Aslında olayı çok basit: UI (kullanıcı arayüzü) ile iş mantığını ayırıp, kodumuzu daha temiz, modüler ve test edilebilir hâle getiriyor.
İlk olarak Microsoft tarafından WPF (Windows Presentation Foundation) için geliştirilmiş olsa da, günümüzde Xamarin, SwiftUI, Angular, React gibi birçok teknolojide de kullanılıyor.

Yani, bu işi bilenler uzun zaman önce "Kardeşim, UI ile backend iç içe olmasın, her şey düzenli olsun" diye düşünmüş ve ortaya MVVM çıkmış. Yani bence öyle :ROFLMAO:




MVVM’nin Bileşenleri

shtdie5.png


MVVM üç temel parçadan oluşuyor:

1️⃣ Model (M) – İşin Mutfağı

Burası veri ve iş mantığının bulunduğu kısım. Veritabanı işlemleri, API istekleri, iş kuralları vs. hep burada yer alır.
📌 Örnek: Bir "Kullanıcı" sınıfı düşünün, bu sınıf veritabanından çekilen isim, yaş, e-posta gibi bilgileri tutuyor.


2️⃣ View (V) – Kullanıcıya Görünen Kısım

Ekranda gördüğümüz her şey buraya giriyor. Ama dikkat! Arayüz mantığını içermez, sadece gösterim işini yapar.
📌 Örnek: Bir HTML sayfası, XAML tasarım dosyası vs.


3️⃣ ViewModel (VM) – Köprü Görevi Görür

Bu arkadaş, Model ile View arasındaki bağlayıcıdır.

  • Model’den veriyi alır, View’in anlayacağı forma sokar ve sunar.
  • İki yönlü veri bağlama (Data Binding) sayesinde View ve ViewModel senkronize çalışır.
📌 Örnek: Kullanıcı bilgilerini gösteren bir formda, kişi adını yazınca bu bilgi Model’e gider ve oradan tekrar View’e geri döner.

MVVM Kullanmanın Avantajları 🚀

sh0boy7.png

Şimdi, neden MVVM kullanalım? İşte birkaç önemli sebep:

✅ Kodun Yeniden Kullanılabilirliği: UI ve iş mantığı ayrıldığı için, farklı platformlarda aynı iş mantığını tekrar tekrar kullanabilirsiniz.


✅ Test Edilebilirlik: ViewModel, UI’ye bağımlı olmadığı için birim testleri rahatça yapabilirsiniz.

✅ Bakım Kolaylığı: UI tarafında bir değişiklik yapmanız gerektiğinde, iş mantığını bozmazsınız. Kod daha modüler ve temiz olur.

✅ İki Yönlü Veri Bağlama (Data Binding): "Şu alanı değiştir, sonra güncelle, sonra tekrar göster..." gibi şeylerle uğraşmazsınız. ViewModel’deki değişiklikler otomatik olarak UI’ye yansır.

✅ Daha Temiz Bir Kod Yapısı: UI mantığı ViewModel’de tutulduğu için View dosyalarımız sadece görselliğe odaklanır, karmaşa azalır.


MVVM 🆚 Diğer Mimari Desenler

ÖzellikMVVMMVC (Model-View-Controller)MVP (Model-View-Presenter)
Veri Bağlama✅ Var (İki yönlü)❌ Yok❌ Yok
UI Bağımsızlığı✅ Yüksek❌ Düşük⚠️ Orta
Test Edilebilirlik✅ Yüksek⚠️ Orta✅ Yüksek
Karmaşıklık⚠️ Orta🟢 Orta/Düşük🔴 Orta/Yüksek
Controller/Presenter Kullanımı❌ Yok✅ Var (Controller)✅ Var (Presenter)

MVVM vs MVC

  • MVC’de View ve Controller birbirine sıkı bağlıdır, bu da karmaşıklığa neden olabilir.
  • MVVM’de ise ViewModel araya girerek UI’yi tamamen soyutlar, yani daha temiz ve esnektir.

MVVM vs MVP

  • MVP’de Presenter, UI’yi yönetir ve doğrudan View ile konuşur.
  • MVVM’de ise ViewModel sadece veriyi yönetir, doğrudan UI ile bağlantısı yoktur.

nkuq7z2.png

Hangi Durumlarda MVVM Kullanılmalı?

✅ WPF, Xamarin, SwiftUI, Flutter gibi veri bağlama destekli framework’lerde MVVM kullanımı çok mantıklıdır.
✅ Mobil ve masaüstü uygulamalarında, iş mantığını UI’den ayırmak için birebirdir.
✅ Karmaşık veri işlemleri olan projelerde, test edilebilirlik ve modülerlik açısından büyük avantaj sağlar.
❌ Basit web projelerinde MVVM kullanmak gereksizdir. Bunun yerine MVC veya SPA (Single Page Application) mimarileri daha uygun olur.


Sonuç

MVVM, UI ile iş mantığını ayrıştırarak daha modüler, sürdürülebilir ve test edilebilir kod yazmamızı sağlıyor. Özellikle veri bağlama (Data Binding) destekleyen framework’lerde çok büyük kolaylık sağlıyor.

Yani, kodu düzenli ve temiz tutmak isteyenler için MVVM biçilmiş kaftan!😎🚀

LOJİSTİK TİM SUNDU

btn1pyf.png
 
Son düzenleme: