
Quando sviluppiamo un’applicazione complessa, i modelli di progettazione e i modelli architettonici semplificano lo sviluppo, se utilizzati opportunamente. In questo articolo approfondiamo un po’ il design pattern strutturale MVP (Model View Presenter).
Il design pattern strutturale MVP (Model View Presenter) è una derivazione del design pattern architetturale Model View Controller (MVC), viene utilizzato prevalentemente per costruire interfacce utente.

Le differenze tra MVC e MVP
Model View Controller
- I controller sono basati sul comportamento e possono essere condivisi da diverse View
- Le View possono comunicare direttamente con il Model
Model View Presenter
- La View è separata dal Model. Il Presenter svolge il ruolo di mediatore tra il Model e la View.
- Più semplice scrivere dei test di Unità
- Generalmente c’è un mapping uno-ad-uno tra View e Presenter, con la possibiltà di utilizzare Presenter multipli per gestire View complesse
- Aggiorna Model e View nello stesso tempo

Tale design pattern è molto diffuso nelle applicazioni web e nelle applicazioni mobile. Lo scopo è quello di separare le logiche di presentazione, ovvero le interazioni possibili, dall’implementazione concreta dei componenti visuali.
I Vantaggi del MVP
- pur condividendo le logiche di interazioni, è possibile implementare lo strato di presentazione in modo completamente autonomo: ad esempio, potrebbe essere necessario avere un’implementazione completamente diversa per i dispositivi mobile rispetto alla versione desktop classica
- permette di isolare le logiche di interazione, facilitandone la manutenzione e la leggibilità
- le logiche di presentazione sono facilmente testabili.
Come dialogano i vari componenti del MVP

Nel dettaglio i componenti che rappresentano il MVP sono:
- Model: è lo strato di Data Access per la gestione dei dati. Può essere visto come una interfaccia che è responsabile di accedere alle API connesse con un database locale oppure una cache.
- View: lavora con il Presenter per mostrare i dati e notificare le azioni dell’utente, solitamente non ha nessuna logica applicativa, ma solo visuale. Nel caso di applicazioni multi piattaforma (Web, Mobile, Desktop), possiamo avere una singola interfaccia per la view e multiple implementazioni.
- Presenter: lavora come uomo-nel-mezzo tra la View e il Model. Prende i dati dal Model, li elabora e li restituisce alla View.
Conclusioni
Utilizzando schemi architettonici e di design, lo sviluppo diventa molto più semplice e trasparente, specialmente per Android che manca di un modello architettonico ben strutturato. L’uso del modello Model View Presenter aumenta la separazione delle preoccupazioni e facilita il test delle unità.
Se anche tu vuoi saperne di più sui progetti di sviluppo in essere nella nostra azienda,
dai un’occhiata alle nostre pagine web dedicate!