stringtranslate.com

Modelo–vista–presentador

Diagrama que representa el patrón de diseño de la GUI modelo-vista-presentador (MVP)

Modelo-vista-presentador ( MVP ) es una derivación del patrón arquitectónico modelo-vista-controlador (MVC) y se utiliza principalmente para crear interfaces de usuario.

En MVP, el presentador asume la funcionalidad del "intermediario". En MVP, toda la lógica de presentación se envía al presentador. [1]

Historia

El patrón de software modelo-vista-presentador se originó a principios de la década de 1990 en Taligent , una empresa conjunta de Apple , IBM y Hewlett-Packard . [2] MVP es el modelo de programación subyacente para el desarrollo de aplicaciones en el entorno CommonPoint basado en C++ de Taligent . Posteriormente, Taligent migró el patrón a Java y lo popularizó en un artículo del CTO de Taligent, Mike Potel. [3]

Después de la discontinuación de Taligent en 1998, Andy Bower y Blair McGlashan de Dolphin Smalltalk adaptaron el patrón MVP para formar la base de su marco de interfaz de usuario Smalltalk. [4] En 2006, Microsoft comenzó a incorporar MVP en su documentación y ejemplos para la programación de interfaces de usuario en .NET Framework . [5] [6]

La evolución y las múltiples variantes del patrón MVP, incluida la relación de MVP con otros patrones de diseño como MVC, se analizan en detalle en un artículo de Martin Fowler [7] y otro de Derek Greer. [8]

Descripción general

MVP es un patrón arquitectónico de interfaz de usuario diseñado para facilitar las pruebas unitarias automatizadas y mejorar la separación de preocupaciones en la lógica de presentación:

Normalmente, la implementación de la vista crea una instancia del objeto presentador concreto, proporcionando una referencia a sí mismo. El siguiente código C# muestra un constructor de vistas simple:

Presentador de clase pública : IPresenter { Presentador público ( vista IView ) { // ... } }            Vista de clase pública : IView { IPresenter privado _presenter ;        Vista pública () { _presenter = nuevo presentador ( este ); } }       

El grado de lógica permitido en la vista varía entre las diferentes implementaciones. En un extremo, la vista es completamente pasiva y envía todas las operaciones de interacción al presentador. En esta formulación, cuando un usuario activa un método de evento de la vista, no hace más que invocar un método del presentador que no tiene parámetros ni valor de retorno. Luego, el presentador recupera datos de la vista a través de métodos definidos por la interfaz de vista. Finalmente, el presentador opera sobre el modelo y actualiza la vista con los resultados de la operación. Otras versiones de modelo-vista-presentador permiten cierta libertad con respecto a qué clase maneja una interacción, evento o comando en particular. Esto suele ser más adecuado para arquitecturas basadas en web, donde la vista, que se ejecuta en el navegador de un cliente, puede ser el mejor lugar para manejar una interacción o comando particular.

Desde el punto de vista de las capas, la clase de presentador podría considerarse como perteneciente a la capa de aplicación en un sistema de arquitectura multicapa , pero también puede verse como una capa de presentador propia entre la capa de aplicación y la capa de interfaz de usuario .

Implementaciones

.NETO

El entorno .NET admite el patrón MVP como cualquier otro entorno de desarrollo. Se puede utilizar el mismo modelo y clase de presentador para admitir múltiples interfaces, como una aplicación web ASP.NET , una aplicación Windows Forms o una aplicación Silverlight . El presentador obtiene y establece información desde/hacia la vista a través de una interfaz a la que puede acceder el componente de interfaz (vista).

Además de implementar manualmente el patrón, se puede utilizar un marco modelo-vista-presentador para respaldar el patrón MVP de una manera más automatizada.

Java

En una aplicación Java ( AWT / Swing / SWT ), el patrón MVP se puede utilizar permitiendo que la clase de interfaz de usuario implemente una interfaz de vista.

El mismo enfoque se puede utilizar para aplicaciones web Java, ya que los marcos web modernos basados ​​en componentes Java permiten el desarrollo de lógica del lado del cliente utilizando el mismo enfoque de componentes que los clientes pesados.

La implementación de MVP en Google Web Toolkit solo requiere que algún componente implemente la interfaz de visualización. El mismo enfoque es posible utilizando Vaadin o el marco web Echo2 .

Los marcos de Java incluyen lo siguiente:

PHP

A partir del entorno de ejecución flexible de PHP , existen amplias posibilidades de enfoques de la lógica de una aplicación. La implementación de la capa del modelo se deja en manos del programador de la aplicación final.

Los marcos PHP incluyen lo siguiente:

Ver también

Referencias

  1. ^ "Proyecto GWT". desarrolladores.google.com .
  2. ^ Necesita investigación: este modelo se utilizaba en el espacio ERP (Lawson Software Inc.) mucho antes.
  3. ^ "MVP: Model-View-Presenter. El modelo de programación Taligent para C++ y Java". Mike Potel
  4. ^ "Twisting the Triad. La evolución del marco de aplicación Dolphin Smalltalk MVP". Andy Bower, Blair McGlashan
  5. ^ "Problemas de la revista MSDN". msdn.microsoft.com . 7 de octubre de 2019.
  6. ^ "El patrón Modelo-Vista-Presentador (MVP)". msdn.microsoft.com . 27 de abril de 2010.
  7. ^ "Arquitecturas GUI" Martin Fowler
  8. ^ "Patrones de arquitectura de aplicaciones interactivas". www.aspiringcraftsman.com .

enlaces externos