Modello Visualizza pattern Presenter con vista passiva. Chi è responsabile della definizione dei testi delle etichette?

2

Cerco di lavorare con il pattern MVP Passive View per la prima volta. Ho le basi ma alcune piccole cose che ancora non capisco.

Il mio esempio: immagina una semplice vista contenente una casella di testo, un pulsante e due etichette. Quando l'utente fa clic sul pulsante, il testo all'interno della casella di testo deve essere mostrato in entrambe le etichette.

Ora ho 2 possibilità.

  1. Crea un'interfaccia di visualizzazione di piccole dimensioni con l'evento ButtonClicked, un metodo GetTextBoxContent e un metodo SetLabelContents. Quindi il presentatore si iscrive all'evento e lo gestisce chiamando i metodi descritti. Qui il presentatore non sa che ci sono più etichette. Chiama solo il metodo impostato una volta ed è fatto. Pertanto, le visualizzazioni devono sapere come gestirlo. Va bene per il modello di visualizzazione passiva?

  2. Crea una grande interfaccia con l'evento ButtonClicked, i metodi GetTextBoxContent, SetLabel1 e SetLabel2. Il presentatore si iscriverebbe nuovamente all'evento, chiama GetTextBoxContent e quindi chiama ciascun metodo di etichetta separato separatamente. In questo modo la vista non sa di avere più etichette e il presentatore contiene quella logica.

Quale modo è corretto / migliore?

Grazie in anticipo!

    
posta selmaohneh 10.04.2018 - 10:49
fonte

1 risposta

5

Entrambe le modalità funzioneranno, quindi sono entrambe corrette. E nessuno di loro è "migliore" in generale, il primo è più semplice, ma il secondo consente alcune cose che il primo non è, quindi devi analizzare i tuoi requisiti se questa complessità aggiuntiva paga.

MVP è un design che consente di testare facilmente il presentatore e di deridere la vista. Vi permetterà anche di scambiare un tipo di vista con un altro (ad esempio, una vista basata su alcune tecnologie di interfaccia utente desktop da una vista basata su una tecnologia di interfaccia utente web o mobile). Quindi la domanda che devi porsi qui è

  • vuoi o devi scrivere test unitari per la logica "set label", dove i test dipendono solo dal presentatore, non dalla vista?

  • vuoi o devi riutilizzare la logica "set label" in due diversi tipi di visualizzazioni?

Se la risposta a una di queste domande è "sì", usa il tuo secondo approccio, se puoi rispondere sia con "no", il primo approccio è sufficiente.

Nota che il tuo esempio artificiale e inventato non fornisce abbastanza contesto per prendere una decisione, probabilmente avrai bisogno di un vero caso d'uso per convalidare i tuoi requisiti. Tuttavia, se sei solo interessato a come viene definita la vista passiva : la definizione di Fowler sembra adattarsi meglio al tuo secondo approccio , poiché l'aggiornamento di qualsiasi cosa nella vista (come un testo di etichetta) non dovrebbe essere fatto direttamente dalla vista stessa, ma da un controller o presentatore .

    
risposta data 10.04.2018 - 15:01
fonte

Leggi altre domande sui tag