Pregunta

¿Cuál es el mejor desglose de responsabilidad cuando se utiliza una cuadrícula virtual y el patrón MVP en una aplicación winforms?

incluyendo:

  1. Obtener devoluciones de llamada de la cuadrícula en las actualizaciones de celda modificadas por el usuario
  2. Devolución de llamada desde la cuadrícula para establecer el estilo y el valor de una celda dada una fila y columna
¿Fue útil?

Solución

Las responsabilidades exactas en los muchos patrones a los que se hace referencia como Model-View-Presenter varían. Principalmente varían sobre cuánto control ejerce el presentador sobre la vista. Martin Fowler tiene una discusión en profundidad de varias variantes diferentes en su capítulo sobre GUI Architectures , Vale la pena leerlo.

Eche un vistazo a Presentador primero , ya que trata sobre adaptadores y las responsabilidades en cierta profundidad.

Tanto Vista pasiva y Controlador supervisor .

modelo (o modelo de dominio) == representación lógica de las entidades involucradas en el sistema, incluido su estado y comportamiento

presentador == escucha los eventos de la vista (y tal vez el modelo) y atiende esas solicitudes, convierte los tipos de modelo en tipos de vista (vista pasiva), esto es realmente una plomería para ocultar la vista y el modelo entre sí. Reacciona al estímulo del usuario.

vista == presentación: la representación visual del modelo con el que el usuario puede interactuar, recogiendo la entrada del usuario

Sus preguntas específicas sobre las devoluciones de llamada y la obtención del estilo de celda de la cuadrícula implicarán que la vista maneje eventos desde la cuadrícula y genere eventos al presentador para solicitar acciones o recuperar datos del modelo. Esto es perfecto para la devolución de llamada cuando se actualiza el contenido de la celda (esto debe publicarse en el presentador para que el presentador pueda validar el cambio en el modelo y realizar el cambio en el modelo). Para el estilo de celda de cuadrícula, estoy pensando que algún tipo de adaptador en la vista puede necesitar traducir el estado del modelo (recuperado mediante un evento desde la vista al presentador) a la información del estilo de celda de cuadrícula. Esto podría suceder en el presentador, pero personalmente preferiría que el presentador no tenga conocimiento del widget en la vista.

Otros consejos

Si lo entiendo correctamente, la cuadrícula es parte de la implementación de la vista y no es visible para el presentador. En ese caso, el presentador no debería necesitar saber cómo se muestran los datos, solo cómo proporcionarlos.

Probablemente crearía una clase auxiliar, un adaptador de algún tipo, con el que la cuadrícula se comunica. La cuadrícula no ve nada más que este ayudante, lo mismo para la vista.

La colaboración sería algo así como:

grid < - helper < - view < - > presentador

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top