2011-09-12 16 views
8

He estado intentando comprender completamente el patrón de Presentar model View como se aplica a C#. Tengo una pregunta que no puedo entender.Model-View-Presenter: ¿Por qué el modelo está estático?

En muchos ejemplos, noté que el modelo se define como estático y se construye en la clase base del presentador (a menudo una clase genérica).

¿Cómo se pueden tener múltiples clases de modelo en ese caso? Desde mi entendimiento, cada presentador creado solo podrá hacer referencia a una sola clase de modelo.

El ejemplo que estoy viendo ahora se puede encontrar aquí: http://wesaday.files.wordpress.com/2009/01/finalzip.doc (cambiar el nombre a .zip). Es de este tutorial: http://wesaday.wordpress.com/2009/01/30/winform-model-view-presenter-part-v-the-view/

Supongo que el problema general que estoy teniendo es ver cómo ejemplos como el anterior se adaptan a una aplicación en funcionamiento con múltiples vistas/presentadores/modelos.

Respuesta

4

Esto es supuestamente solo una simplificación para evitar incorporar una implementación completa de IoC en la muestra. Una tríada de MVP suele estar representada por instancias independientes (es decir, no estáticas, únicas o de otro modo compartidas) en tiempo de ejecución. En algunos casos excepcionales, un modelo puede ser una instancia compartida, pero generalmente es la excepción en lugar de la regla, y generalmente solo es el caso de los formularios o controles de solo lectura.

+0

Creo que entiendo. ¿Esto significa que la clase de presentador siempre debe instanciar una clase de modelo (ya que no es una instancia compartida)? – halohunter

+2

El presentador debe instanciar una nueva instancia de modelo o recibirla de una fuente externa. Por ejemplo, generalmente agrego un método de inicialización (modelo, vista) a mi presentador base, luego aplico lógica basada en el valor del modelo para determinar cómo crear una instancia del modelo. Si el valor es nulo, se invoca un método abstracto para permitir que la subclase cree una nueva instancia de modelo. Si el valor corresponde al tipo del modelo, el presentador simplemente lo usa como su modelo. Si el valor corresponde al tipo de ID del modelo, el valor de ID pasa a un método abstracto para la recuperación del modelo. –

Cuestiones relacionadas