2011-03-21 18 views
31

Describa con un ejemplo simple las diferencias entre MVP-Passive View y MVP-Supervisoring controller. Sería mejor mostrar cómo se vinculan los datos con control y se valida la entrada utilizando ambas técnicas de mvp: vista pasiva y controlador de supervisión. GraciasQué son MVP-Passive View y MVP-Supervisoring controller

Respuesta

52

La diferencia está en las actualizaciones de la capa de vista.

Desde la página Model-View-Presenter pattern en MSDN:

Cuando se actualiza el modelo, la vista también tiene que ser actualizado para reflejar los cambios. Las actualizaciones de vista pueden manejarse de varias maneras. Las variantes Model-View-Presenter, Passive View y Supervisoring Controller, especifican diferentes enfoques para implementar actualizaciones de vista.

En Vista pasiva, el presentador actualiza la vista para reflejar los cambios en el modelo. La interacción con el modelo es manejada exclusivamente por el presentador; la vista no está al tanto de los cambios en el modelo.

En Supervisor Controlador, la vista interactúa directamente con el modelo para realizar un enlace de datos simple que se puede definir de manera declarativa, sin intervención del presentador. El presentador actualiza el modelo; manipula el estado de la vista solo en casos donde se requiere una lógica de UI compleja que no se puede especificar de manera declarativa. Los ejemplos de lógica de IU compleja pueden incluir cambiar el color de un control o ocultar/mostrar dinámicamente los controles. La Figura 1 ilustra la vista lógica de las variantes de Vista pasiva y Controlador de supervisión.

La decisión de utilizar pasiva Ver o Supervisar controlador depende principalmente de cómo comprobable desea que su aplicación sea. Si la capacidad de prueba es una preocupación principal en su aplicación, la Vista pasiva podría ser más adecuada, ya que puede probar toda la lógica de la interfaz de usuario probando el presentador. Por otro lado, si prefiere la simplicidad del código con respecto a la capacidad de prueba completa, el Controlador de supervisión podría ser una mejor opción porque, para los cambios de interfaz de usuario simples, no tiene que incluir código en el presentador que actualice la vista. Al elegir entre la vista pasiva y el controlador supervisor, tenga en cuenta lo siguiente:

  • Ambas variantes le permiten aumentar la capacidad de prueba de su lógica de presentación.
  • La vista pasiva generalmente proporciona una superficie de prueba más grande que el controlador de supervisión porque toda la lógica de actualización de vista se coloca en el presentador.
  • Supervisor El controlador generalmente requiere menos código que la Vista pasiva porque el presentador no realiza actualizaciones simples de la vista.

Más información:

pasiva Vista:

http://martinfowler.com/eaaDev/PassiveScreen.html

http://codebetter.com/jeremymiller/2007/05/31/build-your-own-cab-part-4-the-passive-view/

Supervisar controlador:

http://martinfowler.com/eaaDev/SupervisingPresenter.html

http://codebetter.com/jeremymiller/2007/05/25/build-you-own-cab-part-3-the-supervising-controller-pattern/

Cuestiones relacionadas