Scroll Top
Via Antonio Amato, 20/22 84131 Salerno (SA)

Model View Presenter: design pattern

MVP
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.

MVC vs MVP

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
Android

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

MVP Diagram

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!