Estoy tratando de desarrollar un Sistema de Gestión de Proyectos en mi aplicación siguiendo el patrón Model View Presenter (MVP). Mi pregunta es esta, he visto numerosos ejemplos de MVP pero no he visto uno con un presentador y múltiples vistas. Por ejemplo, cuando un usuario abre un proyecto, los mismos datos de proyecto se pueden ver mediante una vista en árbol, una cuadrícula de datos y un gráfico. ¿Cómo lidiar con eso?MVP de Winforms con múltiples vistas y un presentador
Respuesta
Para hacer que el código esté desacoplado y sea fácil de mantener, le sugiero que tenga un presentador para cada Vista aunque parezcan muy similares: para que cada vista tenga su propia lógica de presentación. Si obtuvo los mismos datos que deben mostrarse en más de una vista, podría compartir el modelo de vista entre los presentadores, pero nuevamente le sugiero que use un modelo de vista diferente para cada presentador (incluso si son muy similares)
La forma en que lo haría, es abstraer su vista colocándola detrás de una interfaz y luego conectar el presentador con la implementación concreta de su vista.
Dicho esto, no estoy seguro de que alguna vez quiera hacerlo en el mundo real. Las diferencias entre tratar con una vista de árbol en comparación con un gráfico significaría que terminará por generalizar las cosas en su interfaz de vista y escribiendo un montón de código desordenado en su vista para cumplir con el contrato.
Yo sugeriría mantener la proporción de su presentador a la vista en 1: 1. Si desea múltiples vistas sobre los mismos datos, entonces es su modelo el que debe compartir entre los presentadores, por lo que está mostrando los mismos datos de diferentes maneras.
Casi siempre debe tener una instancia de presentador por instancia de vista.
Supongamos que abre un CustomerView y su CustomerViewPresenter. Esa es una instancia de cada uno.
Se abre otra CustomerView y otra instancia de CustomerViewPresenter. Eso es dos instancias de cada uno.
Eso no significa que un presentador determinado siempre tenga que usar la misma vista, de hecho no debería. El presentador debe hablar con una interfaz de visualización. Debería poder intercambiar una vista real por una vista simulada para probar.
- 1. MVP y granularidad de presentador
- 2. Patrón de MVP, ¿cuántas vistas tiene un presentador?
- 3. ¿Cómo se navega entre vistas en MVP usando C# WinForms?
- 4. MVP en Winforms
- 5. Vista del modelo Presentador y vistas compuestas
- 6. MVP, Winforms - EventHandlers o Delegados
- 7. ¿Cómo estructurar un proyecto en Winforms usando el patrón MVP?
- 8. MVP y controles de usuario múltiples
- 9. Mejores prácticas para llamadas asincrónicas en MVP con WinForms
- 10. MVP: ¿Debería usar la sesión el presentador?
- 11. MVP dependency injection
- 12. MVP y UserControls y la invocación
- 13. Critique mi aplicación MVP Winforms simple
- 14. ¿El presentador de vistas de modelos de ASP.net vale la pena?
- 15. Marco MVC/MVP para aplicaciones .NET WinForms
- 16. usando patrones MVC MVP en winforms
- 17. Publique un formulario con vistas parciales múltiples
- 18. iOS - UISplitViewController con storyboard - múltiples vistas maestras y múltiples vistas de detalles
- 19. MVP: ¿Debería la View implementar la interfaz de un presentador o viceversa?
- 20. Informar al usuario final de las excepciones en Winforms-MVP y WPF-MVVM
- 21. ¿Cómo se maneja mejor la coordinación de las vistas de los niños en MVP?
- 22. Patrón de MVP con marco de JavaScript?
- 23. MVP (Presentador de vista de modelo) o MVC (Controlador de vista de modelo)
- 24. MVP: cuántos presentadores
- 25. MVP y comunicación entre widgets GWT
- 26. ¿El presentador realiza la lógica de GUI en el patrón de MVP?
- 27. validaciones en MVC/MVP
- 28. Una pregunta general sobre modelo-vista-presentador (C#), ¿debería conocer el modelo al presentador?
- 29. (Patrón MVP) ¿Cómo reenviar los mensajes de error del presentador a la vista?
- 30. Compartir controladores y vistas con múltiples aplicaciones web
Así que crees que aunque haya una duplicación de código, sería mejor ir por ese camino. ¿También uso un patrón de observador para actualizar todas las vistas relevantes? – Dimitris
si las páginas son exactamente iguales pero solo muestra "una etiqueta más" en cada una de ellas puede crear un presentador, un modelo y una vista. El presentador contendrá la lógica para mostrar la UI correcta. La mía es respuesta general –