Articles

MVP architectural pattern

In questo articolo, troveremo qualcosa su MVP pattern, è ereditato da MVC pattern. Ma sicuramente, ha alcune modifiche rispetto al modello MVC. Quindi, capiremo come usarlo, come distinguere tra pattern MVC e pattern MVP.

Iniziamo.

  • Analisi del Problema
  • Definizione del Modello MVP
  • Quando uso
  • Vantaggi & Inconveniente
  • conclusioni

Analisi del Problema

L’attenzione che nasce MVP modello è identico a quello con il pattern MVC. Ma MVP è usato per prevenire alcuni inconvenienti del pattern MVC come:

  • Nel pattern MVC, View e Model possono interagire tra loro. Quindi, di solito convalidiamo i dati dal modello o usiamo la logica dei dati in Vista. Quindi, rende difficile il test delle unità automatizzate.
  • È rilevante per la sicurezza.

Definizione del Modello MVVM

Secondo wikipedia.com abbiamo la definizione del modello MVP:

MVP pattern is a derivation of the Model-View-Controller (MVC) architectural pattern, and is used mostly for building user interfaces.In MVP, the presenter assumes the functionality of the middle-man.In MVP, all presetation logic is pushed to the presenter.

E MVP modello nato nei primi anni 1990 a Taligent, una joint venture di Apple, IBM, e Hewlett-Packard.

Di seguito è riportato il contenuto di ogni parte nel modello MVP.

  • Il modello ha entità e servizi.

    Entities viene utilizzato per contenere dati che vengono mappati con la tabella nel database per utilizzare altri motivi.

    Servizi, può essere utilizzato modello DAO, o modello Repository, sono strato sottile tra livello di applicazione e livello di accesso ai dati. Normalmente gestiscono operazioni CRUD con database in locale o remoto.

  • La vista ha responsabilità che interagiscono con gli utenti.

    Non contiene alcuna logica. Instraderà gli input e i comandi dell’utente (eventi) al Presentatore.

    La Vista di solito ha un riferimento al suo Presentatore.

  • Il Presentatore è la parte intermedia tra Vista e Modello. Svolgerà lo stesso ruolo del controller nel pattern MVC.

    Tutta la logica di business, la logica dei dati, convalida l’input, riceve eventi dalle viste, converte i dati dalla vista al modello o dal modello alla vista è implementata in Presenter.

    Rispetto alla Vista e al Controller nel pattern MVC, la Vista e il Presentatore presenti nel pattern MVP sono completamente disaccoppiati l’uno dall’altro e comunicano tramite un’interfaccia. (Il Presentatore interagire con il punto di Vista tramite interfaccia di Visualizzazione, significa che il Relatore possa eseguire la presentazione e attività di esplorazione, senza alcuna dipendenza dall’attuale tecnologia di interfaccia utente utilizzata)

    E abbiamo diagramma di sequenza di MVP modello:

Quando uso

  • il Nostro schermo ha bi-directional-flow, significa che le interazioni dell’utente è bisogno di chiedere qualcosa dal nostro Modello, e il risultato di questa richiesta interessano la Vista.

  • La vista interessata dagli aggiornamenti dal modello è molto limitata.

  • Il pattern MVP non viene utilizzato in un caso in cui l’interfaccia utente viene aggiornata senza interazioni utente, come l’aggiornamento dell’interfaccia utente quando si verifica un evento nel modello, questo approccio è più vicino a MVVM più di MVP.

Vantaggi& Svantaggio

  1. Vantaggi
    • La Vista non interagisce direttamente con il Modello. Ciò isola l’implementazione della vista migliore rispetto a MVC e consente un più semplice test automatico delle unità del Presentatore e del modello.

    • La possibilità di cambiare l’interfaccia utente da Web a Finestra o Mobile è molto semplice.

    • Basso costo di manutenzione

  2. Svantaggi
    • Il presentatore tende ad espandersi in una grande classe onnisciente se non siamo abbastanza attenti e non rompiamo il nostro codice secondo il principio di responsabilità singola.

    • Maggiore complessità.

    • Curva di apprendimento extra.

Alcuni pattern che sono rilevanti per MVP pattern

  • Application Controller – Se i presentatori interagiscono con un controller di applicazione, i presentatori non hanno bisogno di flusso di pagina e logica di navigazione dello schermo. Ciò semplifica l’aggiornamento del flusso della pagina.

  • Observer pattern

Avvolgimento

  • L’utente finale interagisce solo con la Vista.

  • Una vista è mappata solo a un Presentatore.

  • Visualizza i riferimenti Presenter ma non ha alcun riferimento al modello. E il Presentatore è anche consapevole della Vista ad esso associata.

  • Il modello facilita la comunicazione bidirezionale tra la vista e il Presentatore.

  • Ci sono altre due implementazioni di MVP pattern come Passive View e Supervising Controller.

    • La vista passiva è completamente controllata da Presenter. Implementando MVP Passive View, è molto più semplice gestire la concorrenza e il multithreading.

    • In Supervising Presenter, la vista interagisce direttamente con il modello per eseguire qualsiasi semplice associazione di dati che può essere definita in modo dichiarativo, senza il Presentatore. Il Presentatore aggiorna il Modello. Cambia solo lo stato della vista quando è richiesta una logica dell’interfaccia utente complessa che non può essere specificata in modo dichiarativo.

    • Rispetto ad altre varianti di MVP, come la vista passiva, il modello Supervisore del presentatore rende il codice più semplice una priorità più alta della testabilità completa. Il modello Supervisore Presenter richiede meno codice rispetto ad altri modelli MVP perché utilizza l’associazione dei dati. Il codice è più facile da mantenere perché le semplici modifiche dell’interfaccia utente non richiedono modifiche al codice nel Presentatore per aggiornare la vista.

Fare riferimento:

https://www.linkedin.com/pulse/mvp-architecture-pattern-small-article-khaled-kassem/

Book Architectural Patterns_ Uncover essential patterns in the most indispensable realm of enterprise architecture

https://www.oreilly.com/library/view/architectural-patterns/9781787287495/38abcb95-0392-4127-a3fa-b80ac2807aa9.xhtml

The other idea about Presenter in MVP pattern and Controller in MVC pattern

http://hannesdorfmann.com/mosby/mvp/

Choose MVP pattern over MVC pattern

Why Do You Need to Choose MVP Over MVC Android Architectural Pattern?

Examples for MVP pattern

http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html

https://www.raywenderlich.com/7026-getting-started-with-mvp-model-view-presenter-on-android

https://www.linkedin.com/pulse/when-use-mvc-mvp-mvvm-nothing-ahmed-adel/

A Model View Presenter (MVP) implementation with ASP.NET

iv per ulteriori informazioni, consultare il sito: .10)