Pregunta

He escrito un proyecto MVP donde View es un WinForm que implementa mi interfaz IView. Estoy en el proceso de revisar el código, mejorarlo donde pueda y me gustaría preguntarle cómo piensa la vista y el presentador. ¿Cuál de las siguientes es la mejor práctica en su opinión?

  1. Exponga los métodos de la clase presentadora para que la vista los use. (es decir, hacerlos públicos).
  2. Haga que el presentador escuche los eventos generados por la clase View.

Por ejemplo, mi MVP usa un servicio que se comunica a través de un puerto serie. Para conectarse al dispositivo remoto, mi vista llama al método de Presentador público Connect () que luego llama a los métodos de servicio apropiados.

¿Sería mejor practicar generar un evento Connect () y que el presentador lo escuche?

¿Fue útil?

Solución

Generalmente trabajo para que la vista dependa del presentador y el presentador dependa del modelo. Esto significa que el mismo modelo puede ser usado por múltiples presentadores y el mismo presentador puede usarse en mis múltiples vistas (diferentes diseños de IU, o Winforms vs Web, etc.). Para facilitar esto, la vista llama a métodos públicos en el presentador y escucha los eventos del presentador para decir cuándo han cambiado los datos.

Para ver un ejemplo de por qué desea trabajar de esta manera, imagine una interfaz que tiene dos vistas, una para un usuario principiante y otra para un experto, y la vista para principiantes muestra un subconjunto de los comandos expertos. Si se usa el mismo presentador para ambas vistas, entonces la vista de principiante necesitará exponer eventos para todos los comandos expertos ya que el presentador necesita que estén allí para que pueda unirse a ellos, aunque nunca se activen. Por otro lado, el presentador puede exponer métodos para todas las opciones de expertos y la vista de principiante simplemente nunca las llama, esto significa que ni la vista ni el presentador están implementando una funcionalidad no utilizada.

Otros consejos

La directriz que seguiría aquí es: "Los métodos públicos en el presentador no deben tener parámetros. Ver objeto debe acceder solo a métodos sin parámetros de presentador. Otra opción es ver puede definir eventos a los que el presentador puede suscribirse. De cualquier manera, no debería haber ningún paso de parámetros. . Abierto a sugerencias y comentarios.

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