iOSArchitettura MVP


introduzione

MVP è un modello architettonico, una derivazione del Model-View-Controller. È rappresentato da tre componenti distinti: Modello, Visualizza e Presentatore. È stato progettato per facilitare i test unitari automatizzati e migliorare la separazione delle preoccupazioni nella logica di presentazione.

Negli esempi troverai un semplice progetto costruito pensando al pattern MVP.

Osservazioni

componenti:

inserisci la descrizione dell'immagine qui

  • Il modello è un'interfaccia responsabile per i dati del dominio (da visualizzare o altrimenti applicata nella GUI)
  • La vista è responsabile del livello di presentazione (GUI)
  • Presenter è "l'uomo medio" tra Modello e Vista. Reagisce alle azioni dell'utente eseguite sulla vista, recupera i dati dal modello e li formatta per la visualizzazione nella vista

Funzioni del componente:

Modello vista Presentatore
Comunica con il livello DB Rende i dati Esegue query sul modello
Alzare gli eventi appropriati Riceve gli eventi Formatta i dati dal modello
Logica di validazione molto semplice Invia dati formattati alla vista
Logica di convalida complessa

Differenze tra MVC e MVP :

  • La vista in MVC è strettamente accoppiata al controller, la parte View dell'MVP è composta da UIViews e UIViewController
  • MVP View è il più stupido possibile e non contiene quasi nessuna logica (come in MVVM), MVC View ha alcune logiche di business e può interrogare il Modello
  • MVP View gestisce i gesti dell'utente e delega l'interazione al Presenter, in MVC il Gestore gestisce gesti e comandi Modello
  • Il modello MVP supporta molto il test delle unità, MVC ha un supporto limitato
  • MVC Controller ha molte dipendenze UIKit, MVP Presenter non ne ha

Professionisti:

  • MVP rende UIViewController una parte del componente View è stupido, passivo e ... meno massiccio;]
  • La maggior parte della logica aziendale è incapsulata a causa delle viste stupide, questo offre un'eccellente testabilità. È possibile introdurre oggetti fittizi per testare la parte del dominio.
  • Le entità separate sono più facili da tenere a mente, le responsabilità sono chiaramente divise.

Contro

  • Scriverò più codice.
  • Barriera per sviluppatori inesperti o per coloro che non lavorano ancora con il modello.

Architettura MVP Esempi correlati