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!

Questo sito utilizza cookies propri e si riserva di utilizzare anche cookie di terze parti per garantire la funzionalità del sito e per tenere conto delle scelte di navigazione.
Per maggiori dettagli e sapere come negare il consenso a tutti o ad alcuni cookie è possibile consultare la Cookie Policy.

USO DEI COOKIE

Se abiliti i cookie nella tabella sottostante, ci autorizzi a memorizzare i tuoi comportamenti di utilizzo sul nostro sito web. Questo ci consente di migliorare il nostro sito web e di personalizzare le pubblicità. Se non abiliti i cookie, noi utilizzeremo solo cookies di sessione per migliorare la facilità di utilizzo.

Cookie tecnicinon richiedono il consenso, perciò vengono installati automaticamente a seguito dell’accesso al Sito.

Cookie di statisticaVengono utilizzati da terze parti, anche in forma disaggregata, per la gestione di statistiche

Cookie di social networkVengono utilizzati per la condivisione di contenuti sui social network.

Cookie di profilazione pubblicitariaVengono utilizzati per erogare pubblicità basata sugli interessi manifestati attraverso la navigazione in internet.

AltriCookie di terze parti da altri servizi di terze parti che non sono cookie di statistica, social media o pubblicitari.