Domanda

Ho scritto un progetto MVP in cui View è un WinForm che implementa la mia interfaccia IView. Sono in procinto di rivedere il codice, migliorandolo dove posso e vorrei chiedere le tue opinioni su come interagiscono la vista e il presentatore. Quale delle seguenti best practice secondo te?

  1. Esporre i metodi della classe presenter da utilizzare per la vista. (ovvero renderli pubblici).
  2. Chiedi al relatore di ascoltare gli eventi generati dalla classe View.

Ad esempio, il mio MVP utilizza un servizio che comunica tramite una porta seriale. Per connettermi al dispositivo remoto, la mia vista chiama il metodo Presenter pubblico Connect () che quindi chiama i metodi di servizio appropriati.

Sarebbe una buona pratica organizzare un evento Connect () e far sì che il relatore lo ascolti?

È stato utile?

Soluzione

In genere lavoro in modo che la vista dipenda dal presentatore e che il presentatore dipenda dal modello. Ciò significa che lo stesso modello può essere utilizzato da più presentatori e lo stesso presentatore può utilizzare le mie visualizzazioni multiple (layout dell'interfaccia utente diversi o Winforms vs Web ecc.). Per facilitare ciò, la vista chiama metodi pubblici sul presentatore e ascolta gli eventi del presentatore per dire quando i dati sono cambiati.

Per un esempio del motivo per cui potresti voler lavorare in questo modo, immagina un'interfaccia che abbia due viste una per un utente principiante e una per un esperto, con la vista per principianti che mostra un sottoinsieme dei comandi esperti. Se lo stesso presentatore viene utilizzato per entrambe queste viste, la vista per principianti dovrà esporre gli eventi per tutti i comandi degli esperti poiché il relatore ha bisogno che siano presenti in modo che possano essere associati a loro, anche se non verranno mai attivati. D'altra parte, il relatore può esporre metodi per tutte le opzioni di esperti e la vista per principianti non li chiama mai, ciò significa che né la vista né il relatore implementano funzionalità inutilizzate.

Altri suggerimenti

La linea guida che seguirei qui è - " I metodi pubblici nel presentatore dovrebbero essere senza parametri. L'oggetto vista deve accedere solo ai metodi senza parametri del presentatore. Un'altra opzione è view in grado di definire eventi a cui il relatore può iscriversi. Ad ogni modo, non dovrebbe esserci alcun passaggio di parametri. & Quot; . Aperto a sugeestions e commenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top