Le applicazioni moderne richiedono una tale varietà di funzionalità che il processo di sviluppo delle stesse è cresciuto in termini di dimensioni e complessità. Per dare una mano, puoi utilizzare un modello di progettazione architettonica. Supportano la creazione di applicazioni facili da testare e mantenere.
I tre modelli di progettazione più popolari sono MVC, MVP e MVVM. MVC sta per modello, vista e controller, mentre MVP sta per modello, vista e presentatore e MVVM per modello, vista e modello di visualizzazione.
Modelli architettonici e di design
Modello architettonico
Un pattern architettonico chiarisce e definisce alcuni componenti cruciali di un'architettura software. Anche se un pattern architettonico trasmette l'immagine di un sistema, non è un'architettura. In effetti, è una soluzione generale e riutilizzabile a un problema comune nell'architettura del software in un determinato contesto.
Design pattern
Un modello di progettazione è una procedura consigliata formalizzata che è possibile utilizzare per risolvere problemi comuni durante la progettazione di un'applicazione o di un sistema.
La differenza tra pattern architettonico e di design
Cominciamo con il termine comune: modello. Nel software, un modello è una proprietà ricorrente che consente di scomporre una struttura enorme e complessa in componenti più piccoli e più semplici. È possibile utilizzare questo modello per creare una soluzione generale per una classe di problemi.
In ogni livello di sviluppo del software, utilizzerai strumenti diversi. A livelli più piccoli, questi strumenti sono modelli di progettazione. I modelli architettonici esistono a livelli più grandi e paradigmi di programmazione a livello di attuazione.
Perché abbiamo bisogno di modelli di progettazione architettonica?
Durante lo sviluppo del software, è possibile utilizzare modelli di progettazione architettonica per risolvere problemi comuni. Una buona architettura può anche aiutarti a:
- Dividi compiti complessi in compiti più semplici.
- Riduci i bug.
- Produci codice verificabile e manutenibile.
Ma senza un modello architettonico, potresti incontrare difficoltà nel mantenere la logica aziendale della tua app.
Model, View, ViewModel, Controller e Presenter
Prima di esaminare ogni modello, ecco i termini che li compongono:
- Modello memorizza i dati e comunica direttamente con il database. Il modello è la parte che rappresenta i dati e la logica dell'applicazione. Definisce le regole aziendali che gestiscono la gestione, la modifica o l'elaborazione dei dati.
- Visualizzazione visualizza i dati del modello ed è responsabile della rappresentazione dei dati nell'interfaccia utente.
- Visualizza modello è esclusivo del modello MVVM. Questa è un'astrazione del livello di visualizzazione e funge anche da wrapper per i dati del modello.
- Controllore è il componente che integra la vista e il modello.
- Presentatore è un componente che esiste solo nel modello MVP. Presenter ottiene l'input dal componente di visualizzazione ed elabora i dati con l'aiuto del modello.
Pattern MVC, MVP e MVVM
Pattern-View-Controller Modello
Il Modello architettonico MVC è stato il primo, ed è oggi popolare nel campo delle applicazioni web. È stato introdotto negli anni '70. Questo modello ti consente di creare un'applicazione attorno alla Separation of Concerns (SoC). Facilita lo sforzo necessario per testare, mantenere e sviluppare la tua applicazione.
Nel modello MVC, il modello non comprende la vista o il controller. L'osservatore del modello riceverà un avviso ogni volta che si verifica un cambiamento nella visualizzazione e nel controller. Il controller aiuta il processo di instradamento a collegare il modello alla vista pertinente.
Alcuni dei vantaggi del modello MVC sono:
- Separazione delle preoccupazioni (più mirata).
- Semplifica il test e la gestione del codice.
- Promuove il disaccoppiamento dei livelli dell'applicazione.
- Migliore organizzazione e riutilizzabilità del codice.
Ecco come funziona MVC:
Grazie al SoC, MVC può ridurre le dimensioni del codice e creare un buon codice pulito e gestibile.
Modello di visualizzazione modello-presentatore
Il modello MVP condivide due componenti con MVC: modello e vista. Sostituisce il controller con il presentatore. Il presentatore, come suggerisce il nome, viene utilizzato per presentare qualcosa. Ti permette di deridere la vista più facilmente.
In MVP, il presentatore ha la funzionalità di "intermediario" perché tutta la logica di presentazione è spinta su di esso. La vista e il presentatore in MVP sono anche indipendenti l'uno dall'altro e interagiscono tramite un'interfaccia.
Ecco un'illustrazione di come funziona il pattern MVP:
Il presentatore riceve input dall'utente tramite la vista. Quindi elabora le azioni dell'utente con l'aiuto del modello, ritrasmettendo i risultati alla vista. Il presentatore comunica con la vista tramite interfacce.
Modello-View-ViewModel Pattern
MVVM è l'evoluzione moderna di MVC. L'obiettivo principale di MVVM è fornire una chiara separazione tra la logica di dominio e il livello di presentazione. MVVM supporta l'associazione dati bidirezionale tra la vista e il modello di visualizzazione.
Il modello MVVM ti consente di separare la vista e il modello del tuo codice. Ciò significa che quando il modello cambia la vista non è necessaria e viceversa. Usando un viewmodel, puoi eseguire unit test e testare il tuo comportamento logico senza coinvolgere la tua vista.
Ecco un'illustrazione di come funziona MVVM:
Quando utilizzare MVC, MVP e MVVM
Ora che hai imparato a conoscere ogni modello, scopri quando usarli.
Quando usare MVC
MVC è semplicemente un'implementazione di Separation of Concerns. Se la tua applicazione deve separare i dati (modello), il crunching dei dati (controller) e la presentazione dei dati (visualizzazione), MVC funzionerà bene. MVC funziona bene anche in un'applicazione in cui l'origine dati e/o la presentazione dei dati possono cambiare in qualsiasi momento.
Quando usare MVP
Puoi utilizzare MVP quando la tua applicazione ha un flusso bidirezionale. Se le interazioni dell'utente devono richiedere qualcosa dal modello e il risultato di questa richiesta cambierà immediatamente l'interfaccia utente, considera MVP.
Quando utilizzare MVVM
Ti consigliamo di utilizzare MVVM quando:
- Devi condividere un progetto con un designer e il lavoro di progettazione e sviluppo può avvenire in modo indipendente.
- Hai bisogno di unit test per le tue soluzioni.
- È necessario disporre di componenti riutilizzabili, sia all'interno che tra i progetti dell'organizzazione.
- Si desidera maggiore flessibilità per modificare le visualizzazioni senza dover eseguire il refactoring di altre logiche nella base di codice.
Quale modello dovresti scegliere?
Il motivo principale per utilizzare un design pattern è ridurre la complessità. Puoi farlo riducendo la complessità complessiva o sostituendo la complessità non familiare con quella familiare. Se un modello di progettazione non può ridurre la complessità in nessuno di questi due modi, non utilizzarne nessuno; non aggiungerà alcun valore.
Se sei davvero sicuro di dover utilizzare un modello di progettazione, prova a creare una lista di controllo. Basalo sulle situazioni che hai visto qui e scegli la soluzione migliore per il tuo progetto.