Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Desarrollo Rápido
Portadade Aplicaciones
Universidad de Almería
Patrón arquitectónico MVP
Índice
Objetivos de MVP
Incrementar la testabilidad
Mayor cohesión
Separación de responsabilidades
Ortogonalidad (habilidad para cambiar el diseño conceptual de la
aplicación con un mínimo impacto)
Consecuencias
Desarrollo en paralelo
Reusabilidad
Mantenibilidad
Independencia con respecto al interface de usuario
Ventajas de MVP
Clara separación de responsabilidades entre interfaz, lógica de
negocio y de control
Facilidad para la realización de pruebas unitarias de los
componentes, así como de aplicar desarrollo guiado por pruebas
(TDD)
Simplicidad en el desarrollo y mantenimiento de los sistemas
Reutilización de los componentes
Facilidad para desarrollar prototipos rápidos
Sencillez para crear distintas representaciones de los mismos
datos
Los sistemas son más escalables y eficientes
Desventajas de MVP
Como le sucede a MVC, tener que ceñirse a una estructura
predefinida, lo que a veces puede incrementar la complejidad del
proyecto
Al principio puede requerir cierto esfuerzo adaptarse a esta
filosofía, sobre todo a desarrolladores acostumbrados a otros
modelos más cercanos al escritorio
Como le sucede a MVC, la distribución de componentes obliga a
crear y mantener un mayor número de archivos
Lógica de Formato
Estado de la Visualización
Presentación
(Datos)
Presentador (difícil de probar)
Vista
Modelo Lógica de la
Gestión de
Eventos IU
Creación de la Vista
Interface IVista que represente la visualización del Modelo en la
Vista e incorpore los componentes gráficos del interface de usuario
Programa Principal
Crea un Modelo que implemente IModelo
Crea una Vista (hereda de Form e implementa IVista) y en el
constructor se le pasa el Modelo
Se llama a Application.Run(Vista);
using System;
namespace HolaMundo.MVP.Pasivo
{
public interface IVista
{
string MensajePedirNombre { get; set; }
string MensajeSaludo { get; set; }
string Nombre { get; set; }
string MensajeBoton { get; set; }
}
}
namespace HolaMundo.MVP.Activo
{
public interface IVista
{
string MensajePedirNombre { get; set; }
string Nombre { get; set; }
string MensajeSaludo { get; set; }
void SaludoButton_Click(object sender, EventArgs e);
}
}