Esplorazione dei modelli di progettazione MVC, MVP e MVVM

L'interfaccia utente contiene spesso molto codice disordinato principalmente a causa della logica complicata che deve gestire. I modelli di presentazione sono progettati principalmente con un obiettivo in mente, riducendo il codice complesso nel livello di presentazione e rendendo il codice nell'interfaccia utente pulito e gestibile. In questo post presenterò una discussione sui modelli di progettazione MVC, MVP e MVVM e evidenzierò quando uno dovrebbe essere il design preferito rispetto all'altro.

Model View Controller

Il framework Model View Controller (comunemente noto come MVC) consente di creare applicazioni più facili da testare e mantenere. Si compone di tre componenti principali, vale a dire:

  1. Modello: questo è il livello che rappresenta i dati dell'applicazione
  2. Visualizza: rappresenta la presentazione o il livello dell'interfaccia utente
  3. Controller: questo livello contiene in genere la logica di business dell'applicazione

L'obiettivo principale del modello di progettazione MVC è la separazione delle preoccupazioni per facilitare la testabilità. Il modello di progettazione Model View Controller consente di isolare i problemi e semplifica il test e la manutenzione del codice dell'applicazione. In un tipico design MVC, la richiesta arriva prima al controller che associa il modello alla vista corrispondente. Nel modello di progettazione MVC, la vista e il controller utilizzano la progettazione della strategia e la vista e il modello vengono sincronizzati utilizzando la progettazione dell'osservatore. Quindi, possiamo dire che MVC è un pattern composto. Il controller e la vista sono liberamente accoppiati e un controller può essere utilizzato da più visualizzazioni. La vista sottoscrive le modifiche nel modello.

Presentatore vista modello

Il pattern di progettazione MVP (Model View Presenter) comprende anche tre componenti: il modello, la vista e il presenter. Nel modello di progettazione MVP, il controller (in MVC) viene sostituito dal presentatore. A differenza del modello di progettazione MVC, il presentatore fa riferimento alla vista grazie alla quale è più facile deridere la vista e le unità di test delle applicazioni che sfruttano il modello di progettazione MVP rispetto al modello di progettazione MVC sono molto più semplici. Nel modello di progettazione MVP, il presentatore manipola il modello e aggiorna anche la vista. Esistono due varianti di questo design. Questi includono quanto segue.

  1. Vista passiva: in questa strategia, la vista non è a conoscenza del modello e il presentatore aggiorna la vista per riflettere le modifiche nel modello.
  2. Controller supervisione - in questa strategia, la vista interagisce direttamente con il modello per associare i dati ai controlli dati senza l'intervento del presentatore. Il presentatore è responsabile dell'aggiornamento del modello. Manipola la vista solo se necessario, se è necessaria una complessa logica dell'interfaccia utente da eseguire.

Sebbene entrambe queste varianti promuovano la testabilità della logica di presentazione, la variante della vista passiva è preferita rispetto all'altra variante (controller di supervisione) per quanto riguarda la testabilità principalmente perché hai tutta la logica della vista aggiornata all'interno del presentatore.

Il modello di progettazione MVP è preferibile rispetto a MVC quando l'applicazione deve fornire supporto per più tecnologie di interfaccia utente. È anche preferito se si dispone di un'interfaccia utente complessa con molte interazioni da parte dell'utente. Se desideri eseguire un test di unità automatizzato sull'interfaccia utente della tua applicazione, il modello di progettazione MVP è adatto e preferito rispetto al design MVC tradizionale.

Model - View - ViewModel (MVVM)

Il Model - View - ViewModel (MVVM) è una variazione del modello di progettazione del modello di presentazione di Martin Fowler. MVVM è un perfezionamento del popolare design MVC e ViewModel in MVVM viene utilizzato per facilitare la separazione della presentazione. In MVVM la logica è memorizzata nel presenter e la vista è completamente isolata dal modello. Mentre il presentatore non è a conoscenza della vista, la vista è a conoscenza del presentatore: il presentatore in MVVM viene utilizzato per rappresentare una vista astratta dell'interfaccia utente. Una vista passiva implica che la vista non ha alcuna conoscenza del modello. Nel modello di progettazione MVVM, la vista è attiva e contiene comportamenti, eventi e informazioni sull'associazione dei dati. Si noti che la vista in MVVM non è responsabile della gestione delle informazioni sullo stato: la vista è piuttosto sincronizzata con il viewmodel.Il viewmodel in MVVM è responsabile della separazione della presentazione ed espone metodi e comandi per gestire lo stato di una vista e manipolare il modello.

Come comunicano la vista e il modello di visualizzazione in MVVM? Bene, la vista e il modello di visualizzazione in MVVM comunicano utilizzando metodi, proprietà ed eventi. L'associazione dati bidirezionale o l'associazione dati bidirezionale tra la vista e il modello di visualizzazione garantisce che i modelli e le proprietà nel modello di visualizzazione siano sincronizzati con la visualizzazione. Il modello di progettazione MVVM è adatto nelle applicazioni che richiedono il supporto per l'associazione dati bidirezionale.