Me estoy divirtiendo al tratar de entender algo de MVP stuf, ya que pertenece a User Controls. Estoy usando .NET WinForms (o algo parecido) y el patrón Supervisor Controlador (bueno, creo que soy :).MVP y UserControls y la invocación
el control de usuario es en sí mismo parte de una aplicación MVP (es la vista y tiene un presentador asociado etc). El presentador siempre se inicia primero, y comienza el modelo (s) y luego la vista (s). The View construye su UI, parte de la cual será NUEVA a la UC, que es la Vista.
Ahora el (forma) Presentador necesita saber acerca de la UC Presentador, pero estoy pensando que no sabe nada acerca de cómo la vista se compone. El formulario Presenter no sabe, por ejemplo, que la UC forma parte de la colección de controles del formulario, ni debería hacerlo.
Además, la experiencia de diseño no debe cambiarse; IOW el desarrollador de la Vista (formulario) solo debe poder seleccionar un Control de usuario de la caja de herramientas y soltarlo en un formulario.
Por lo tanto, a mis preguntas. En primer lugar, ¿son mis suposiciones anteriores correctas? ¿Algo equivocado? ¿Hecho un desastre? WTF estás pensando?
En segundo lugar, ¿es correcto (¿es suficiente?) Que el formulario Vista invoque la Vista de UC, y el presentador de formulario invoque el Presentador de UC y tenga algún mecanismo para indicarle a UC ¿Cuál es su Presentador? Esto rompe mi regla de "Presentador primero", pero no estoy seguro de cómo hacerlo.
Cualquier otro pensamiento, sugerencia o comentario aceptado con mucho gusto.
- nwahmaet
Me encantaría un ejemplo de código de configuración 3. – Llyle
Si se pudiera proporcionar uno que sería encantador.Me resulta muy difícil encontrar detalles sobre cómo implementar patrones de MVP en winforms más complicados ... –
Tengo un problema similar con los controles de usuario en formularios web. La página y cada control de usuario tienen sus propios presentadores distintos y desconectados. Es muy posible que cada presentador cargue la misma entidad de datos subyacente. Aunque el patrón tiene una excelente reutilización de código, obviamente golpea la base de datos más de lo necesario. – Junto