Sobes.tech
Middle

O que é o padrão de arquitetura MVP?

sobes.tech IA

Resposta da IA

O MVP (Model-View-Presenter) é um padrão arquitetónico para separar a lógica de negócio, os dados e a interface de utilizador.

Componentes-chave:

  • Model: Representa os dados e a lógica de negócio. Não tem conhecimento da View ou do Presenter.
  • View: Mostra os dados, fornece a interface de utilizador e encaminha as ações do utilizador para o Presenter. Não contém lógica de negócio. A View é passiva e apenas mostra os dados recebidos do Presenter.
  • Presenter: Atua como intermediário entre o Model e a View. Processa os eventos da interface de utilizador, extrai dados do Model e atualiza a View. O Presenter contém a lógica de apresentação, mas não a lógica de negócio. Gerencia o estado da View.

Interação:

  1. O utilizador interage com a View.
  2. A View delega a ação ao Presenter.
  3. O Presenter processa a ação:
    • Atualiza o Model se necessário.
    • Solicita dados ao Model.
    • Atualiza a View com os novos dados.

Vantagens:

  • Melhor testabilidade (o Presenter e o Model podem ser testados independentemente da View).
  • Separação de responsabilidades.
  • Melhor manutenção.

Exemplo (esquema):

// Modelo
class DataModel {
    getData() {
        // ... lógica para obter dados ...
        return { message: "Olá do modelo!" };
    }
}

// Visão (pseudo-código UI)
class TextView {
    display(data) {
        // Atualizar o texto na tela
        console.log(data.message);
    }

    onClickButton(handler) {
        // Anexar manipulador ao botão
    }
}

// Apresentador
class Presenter {
    constructor(model, view) {
        this.model = model;
        this.view = view;
        this.view.onClickButton(this.handleButtonClick.bind(this)); // Ligação do evento
    }

    handleButtonClick() {
        const data = this.model.getData();
        this.view.display(data);
    }
}

// Uso
const model = new DataModel();
const view = new TextView(); // Visão real de UI
const presenter = new Presenter(model, view);