IT Wzorzec architektoniczny

MVVM

Definicja #

MVVM (Model-View-ViewModel) to wzorzec architektoniczny opracowany przez Microsofta dla platformy WPF (Windows Presentation Foundation), powszechnie stosowany w aplikacjach mobilnych i desktopowych. Dzieli aplikację na trzy warstwy:

  • Model — dane i logika biznesowa: encje domenowe, repozytoria, serwisy pobierające dane z API lub bazy danych
  • View — warstwa UI: XAML w WPF/MAUI, XML w Android, SwiftUI w iOS — odpowiedzialna wyłącznie za prezentację
  • ViewModel — pośrednik między Modelem a Widokiem: udostępnia właściwości i komendy, implementuje INotifyPropertyChanged (lub Observable w Android/iOS), bez bezpośrednich referencji do View

Kluczowy mechanizm MVVM to data binding — automatyczna synchronizacja wartości między właściwościami ViewModelu a elementami UI bez kodu w code-behind. W WPF/MAUI jest to wbudowany mechanizm XAML, w Android używa się Jetpack Data Binding lub StateFlow, w iOS Combine lub ObservableObject (SwiftUI).

MVVM jest implementowany przez frameworki: MVVM Community Toolkit (.NET), Prism (WPF/MAUI), MvvmCross (cross-platform Xamarin), Android Architecture Components (ViewModel, LiveData, StateFlow). Wzorzec pozwala testować logikę ViewModelu bez instancji UI.

Zastosowania #

  • Aplikacje WPF i .NET MAUI — separation of concerns przez data binding XAML z ViewModelem implementującym INotifyPropertyChanged
  • Android — ViewModel z Jetpack z StateFlow/LiveData do reactive UI i przeżywania rotation changes
  • SwiftUI i UIKit (iOS) — ObservableObject i @Published do reaktywnego wiązania danych z widokami
  • Testowanie jednostkowe logiki UI — ViewModel jest czystą klasą C#/Kotlin/Swift testowalną bez emulatora
  • Xamarin.Forms i MAUI — cross-platform aplikacje mobilne z wspólnym ViewModelem dla iOS i Android

Ścieżka nauki #

Nauka MVVM jest najłatwiejsza w kontekście konkretnej technologii. Dla .NET wybierz WPF lub MAUI i poznaj data binding XAML, INotifyPropertyChanged i Commands (ICommand). Microsoft Learn (learn.microsoft.com) i dokumentacja .NET MAUI są doskonałymi zasobami, jak i MVVM Community Toolkit (simplyfikuje boilerplate przez source generators).

Dla Android: oficjalny Guide to App Architecture (developer.android.com/topic/architecture) opisuje MVVM z Jetpack ViewModel, Repository i StateFlow. Kurs "Android Basics with Compose" od Google wprowadza MVVM przez nowoczesne narzędzia.

Kluczowe koncepcje do opanowania: reactive programming (StateFlow, LiveData, Combine), Command pattern (ICommand, RelayCommand), Dependency Injection (dla ViewModeli) i nawigacja (Navigation Component, AppNavigator). Testy jednostkowe ViewModelu bez UI to jeden z głównych benefitów wzorca — koniecznie praktykuj. Znajomość MVVM jest wymagana na większości stanowisk mobile i desktop developer .NET.

Ostatnia aktualizacja:

Powiązane hasła

Technologie i biblioteki, które najczęściej pojawiają się razem z MVVM w ogłoszeniach.

Cały słownik IT

Przeglądaj słownik IT alfabetycznie

Wybierz literę, aby zobaczyć wszystkie hasła zaczynające się od niej.