Model-View-ViewModel, o MVVM, è un modello di progettazione software inteso a separare i controlli dell'interfaccia utente e la logica del programma in Windows e nel software di presentazione grafica web. Conosciuto anche come model-view-binder, aiuta a suddividere i programmi in moduli per lo sviluppo e il riutilizzo del codice in modo più rapido e semplice.
Derivato dal pattern Model View Controller, MVVM aiuta ad affrontare vari problemi di sviluppo per rendere un'applicazione più facile da testare, perfezionare, mantenere ed evolvere. I progettisti dell'interfaccia utente trovano il modello più facile da collaborare durante lo sviluppo delle parti di un'app.
Il modello MVVM
Il pattern MVVM ha tre componenti: model, view e view model.
Modello
Il modello contiene i dati dell'applicazione che di solito sono strutture o classi semplici. Può essere considerato una rappresentazione del modello di dominio dell'app, contenente un modello di dati insieme a una logica di convalida e di business. Esempi di oggetti del modello sono Plain Old CLR Objects (POCO), oggetti di trasferimento dati (DTO) e entità generate e oggetti proxy.
Vedi
La vista definisce il layout, la struttura e l'aspetto di ciò che gli utenti vedono sullo schermo. È l'unica cosa con cui gli utenti finali hanno familiarità e con cui interagiscono. In MVVM, la visualizzazione è attiva, il che significa che non è completamente manipolata da un presentatore / controller. Ha eventi, comportamenti e associazioni di dati che richiedono la conoscenza del modello sottostante e del modello di visualizzazione.
Vedi il modello
Il modello della vista si trova tra il modello e i livelli della vista, che ospita i controlli per interagire con la vista. Introduce la Separazione della presentazione, ovvero l'idea di mantenere le sfumature della vista separate dal modello. Il modello di vista espone comandi e metodi e punti per mantenere lo stato della vista, attivare eventi nella vista e manipolare il modello.
Vantaggi di MVVM
I progettisti di software preferiscono MVVM per i suoi vantaggi:
Estensibilità
MVVM rende facile per i progettisti aggiungere o sostituire nuovi pezzi di codice. Possono ridefinire l'interfaccia utente dell'app senza toccare il codice fintanto che il codice è interamente in XAML.
Testabilità
È più facile per i progettisti scrivere unit test sulla logica di base con MVVM. I test unitari del modello di visualizzazione esercitano la stessa funzionalità utilizzata dalla visualizzazione.
Trasparenza nella comunicazione
Il modello della vista fornisce al controller della vista un'interfaccia trasparente per popolare il livello della vista e interagire con il livello del modello. Ciò si traduce in una comunicazione trasparente tra i livelli di un'applicazione.