2011-09-12 13 views
8

Ho cercato di comprendere appieno il pattern Model View Presenter applicato a C#. Ho una domanda che non riesco a capire.Model-View-Presenter: perché il modello è statico?

In molti esempi, ho notato che il modello è definito come statico ed è costruito nella classe base di Presenter (spesso una classe generica).

Come si possono avere più classi di modelli in questo caso? Da quanto ho capito, ogni presentatore creato sarà in grado di fare riferimento a una singola classe di modelli.

L'esempio che sto guardando ora può essere trovato qui: http://wesaday.files.wordpress.com/2009/01/finalzip.doc (rinominare in .zip). È da questo tutorial: http://wesaday.wordpress.com/2009/01/30/winform-model-view-presenter-part-v-the-view/

L'ipotesi del problema generale che sto vedendo è come esempi come quello sopra si adattano a un'applicazione funzionante con più viste/presentatori/modelli.

risposta

4

Questa è presumibilmente solo una semplificazione per evitare di incorporare un'implementazione IoC completa nel campione. Una triade MVP viene solitamente rappresentata da istanze autonome (vale a dire non statiche, singleton o comunque condivise) in fase di esecuzione. In alcuni casi eccezionali, un modello può essere un'istanza condivisa, ma in genere si tratta dell'eccezione piuttosto che della regola ed è generalmente solo il caso di moduli o controlli di sola lettura.

+0

Penso di aver capito. Questo significa che la classe presenter dovrebbe sempre creare un'istanza di una classe del modello (poiché non è un'istanza condivisa)? – halohunter

+2

Il presentatore deve creare un'istanza di una nuova istanza di modello o riceverla da un'origine esterna. Ad esempio, di solito aggiungo un metodo Inizializza (modello, vista) al mio relatore di base, quindi applica la logica in base al valore del modello per determinare come istanziare il modello. Se il valore è null, viene invocato un metodo astratto per consentire alla sottoclasse di creare una nuova istanza di modello. Se il valore corrisponde al tipo del modello, il presentatore lo utilizza semplicemente come modello. Se il valore corrisponde al tipo di ID del modello, il valore ID viene passato a un metodo astratto per il recupero del modello. –

Problemi correlati