Middle
¿Qué es el patrón de arquitectura MVP?
sobes.tech AI
Respuesta de la IA
MVP (Modelo-Vista-Presentador) es un patrón arquitectónico para separar la lógica de negocio, los datos y la interfaz de usuario.
Componentes clave:
- Modelo: Representa los datos y la lógica de negocio. No tiene conocimiento de la Vista o el Presentador.
- Vista: Muestra los datos, proporciona la interfaz de usuario y redirige las acciones del usuario al Presentador. No contiene lógica de negocio. La vista es pasiva y solo muestra los datos recibidos del Presentador.
- Presentador: Actúa como intermediario entre el Modelo y la Vista. Procesa los eventos de la interfaz de usuario, extrae datos del Modelo y actualiza la Vista. El Presentador contiene la lógica de presentación, pero no la lógica de negocio. Gestiona el estado de la Vista.
Interacción:
- El usuario interactúa con la Vista.
- La Vista delega la acción al Presentador.
- El Presentador procesa la acción:
- Actualiza el Modelo si es necesario.
- Solicita datos del Modelo.
- Actualiza la Vista con los nuevos datos.
Ventajas:
- Mejorabilidad de las pruebas (el Presentador y el Modelo pueden ser probados independientemente de la Vista).
- Separación de responsabilidades.
- Mejor mantenibilidad.
Ejemplo (esquema):
// Modelo
class DataModel {
getData() {
// ... lógica para obtener datos ...
return { message: "¡Hola desde el modelo!" };
}
}
// Vista (pseudocódigo UI)
class TextView {
display(data) {
// Actualizar el texto en pantalla
console.log(data.message);
}
onClickButton(handler) {
// Adjuntar manejador al botón
}
}
// Presentador
class Presenter {
constructor(model, view) {
this.model = model;
this.view = view;
this.view.onClickButton(this.handleButtonClick.bind(this)); // Vinculación del evento
}
handleButtonClick() {
const data = this.model.getData();
this.view.display(data);
}
}
// Uso
const model = new DataModel();
const view = new TextView(); // Vista real de UI
const presenter = new Presenter(model, view);