Modelo–vista–presentador

De Wikipedia, la enciclopedia libre
Esquema que describe la IGU del patrón de diseño Modelo Vista Presentador (MVP).

Modelo–Vista–Presentador (MVP) es una derivación del patrón arquitectónico modelo–vista–controlador (MVC), y es utilizado mayoritariamente para construir interfaces de usuario.

En MVP el presentador asume la funcionalidad del "intermediario". En MVP, toda lógica de presentación es colocada al presentador.[1]

Descripción de patrón[editar]

MVP es un patrón arquitectónico de interfaz de usuario diseñada para facilitar pruebas de unidad automatizada y mejorar la separación de inquietudes en lógica de presentación:

  • El modelo es una interfaz que define los datos que se mostrarán o sobre los que actuará la interfaz de usuario.
  • El presentador actúa sobre el modelo y la vista. Recupera datos de los repositorios (el modelo), y los formatea para mostrarlos en la vista.
  • La vista es una interfaz pasiva que exhibe datos (el modelo) y órdenes de usuario de las rutas (eventos) al presentador para actuar sobre los datos.

Normalmente, la vista de implementación instancia el objeto de presentador en concreto, proporcionando una referencia a él. El siguiente código C# demuestra una simple vista de un constructor, donde ConcreteDomainPresenter implementa la interfaz IDomainPresenter:

public class DomainView : IDomainView
{
    private IDomainPresenter domainPresenter = null;

    ///<summary>Constructor</summary>
    public DomainView()
    {
        domainPresenter = new ConcreteDomainPresenter(this);
    }
}

El grado de la lógica permitida en la vista varía entre las diferentes implementaciones.

  • En un extremo, donde la vista es totalmente pasiva, simplemente reenvía todas las operaciones de interacción hacia el presentador. En esta formulación, cuando un usuario activa un método de evento de la vista, esta no hace más que invocar un método del presentador que no tiene parámetros y no devuelve ningún valor. El presentador recupera entonces datos de la vista a través de los métodos definidos por la interfaz de vista. Por último, el presentador opera en 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 determinada interacción, evento o comandos. Esto suele ser más adecuado para arquitecturas basadas en la 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 en particular.

Desde un punto de vista de 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 pueda ser visto como capa de presentador de su propiedad entre la capa de aplicación y la capa de interfaz del usuario.

Implementación en .NET[editar]

El entorno .NET apoya el patrón MVP mucho como cualquier otro entorno de desarrollo. La misma clase modelo y presentador pueden usar soporte interfaces múltiples, como un Aplicación web ASP.NET, una aplicación de Windows Form, o una aplicación Silverlight. El presentador obtiene y establece la información de/a la vista a través de una interfaz que se puede acceder por el componente de la interfaz (vista).

Además de implementar manualmente el modelo, un marco modelo-vista-presentador puede ser utilizado para apoyar el patrón MVP de una manera más automatizada. A continuación se muestra una lista de tales marcos bajo la plataforma .NET.

Marcos .NET[editar]

Implementación en Java[editar]

En una aplicación Java (AWT/Swing/SWT), el patrón MVP puede ser utilizado dejando la clase de interfaz del usuario implementar una interfaz de vista.

La misma aproximación puede ser utilizada para aplicaciones basadas en web Java, desde modernos marcos Web basados en componentes Java permiten el desarrollo de la lógica del lado del cliente utilizando el mismo enfoque de componentes como clientes gruesos.

Implementando MVP en Web de Google Toolkit requiere sólo que algún componente implementa la interfaz de vista. La misma aproximación es posible utilizando el marco Web Eco2.

MVP Puede ser implementado en Java SE (AWT y Swing) las aplicaciones que utilizan los marcos Biscotti y MVP4J.

Marcos Java[editar]

Enlaces externos[editar]

Referencias[editar]

Véase también[editar]

El patrón de software modelo-vista-presentador se originó en la década de 1990 en Taligent, una empresa conjunta de Apple, HP, e IBM, y era el modelo de programación subyacente para desarrollo de aplicación en Taligent C++-basado CommonPoint entorno. El patrón era más tarde emigrado por Taligent a Java y popularizado en un papel por Taligent CTO Mike Potel.[1]​ Después de la desaparición de Taligent en 1997, Andy Bower y Blair McGlashan de Delfín Smalltalk adaptó el patrón MVP para formar la base para su marco de interfaz del usuario Smalltalk.[2]​ En 2006, Microsoft empezó incorporar MVP a su documentación y ejemplos para programación de interfaz del usuario en el .Marco NET.[3][4]​ La evolución y variantes múltiples del patrón MVP, incluyendo la relación de MVP a otros patrones de diseño como MVC, está hablado en detalle en un artículo por Martin Fowler[5]​ y otro por Derek Greer[6]

Historia[editar]

  • Nette Marco

Marcos de PHP[editar]

A partir de entornos de ejecución flexibles de PHP, hay amplias posibilidades de enfoques de una lógica de la aplicación. Un gran ejemplo de aplicación patrón MVP es Nette Framework que implementa una rica capa de presentador y capa de vista a través de sistema de plantillas Latte (motor de plantilla de la web). La implementación de capa de modelo se deja al programador de la aplicación del final.

Implementación en PHP[editar]

  1. "MVP: Model-View-Presenter.
  2. «"Twisting the Triad.». Archivado desde el original el 9 de julio de 2011. Consultado el 30 de diciembre de 2015. 
  3. "Model View Presenter."
  4. "The Model-View-Presenter (MVP) Pattern."
  5. "GUI Architectures" Martin Fowler
  6. "Interactive Application Architecture Patterns" Derek Greer