Sobes.tech
Middle

Co je to architektonický vzor MVP?

sobes.tech AI

Odpověď od AI

MVP (Model-View-Presenter) je architektonický vzor na oddělení podnikové logiky, dat a uživatelského rozhraní.

Klíčové komponenty:

  • Model: Reprezentuje data a podnikovou logiku. Nemá znalosti o View nebo Presenter.
  • View: Zobrazuje data, poskytuje uživatelské rozhraní a přesměrovává akce uživatele na Presenter. Neobsahuje podnikovou logiku. View je pasivní a pouze zobrazuje data přijatá od Presenter.
  • Presenter: Působí jako prostředník mezi Model a View. Zpracovává události uživatelského rozhraní, získává data z Modelu a aktualizuje View. Obsahuje logiku prezentace, nikoli podnikovou logiku. Řídí stav View.

Interakce:

  1. Uživatel interaguje s View.
  2. View deleguje akci na Presenter.
  3. Presenter zpracovává akci:
    • Aktualizuje Model, pokud je to potřeba.
    • Požaduje data z Modelu.
    • Aktualizuje View s novými daty.

Výhody:

  • Vylepšená testovatelnost (Presenter a Model mohou být testovány nezávisle na View).
  • Rozdělení odpovědností.
  • Lepší údržba.

Příklad (schéma):

// Model
class DataModel {
    getData() {
        // ... logika získávání dat ...
        return { message: "Ahoj z modelu!" };
    }
}

// Pohled (pseudokód UI)
class TextView {
    display(data) {
        // Aktualizovat text na obrazovce
        console.log(data.message);
    }

    onClickButton(handler) {
        // Připojit obslužnou funkci k tlačítku
    }
}

// Presenter
class Presenter {
    constructor(model, view) {
        this.model = model;
        this.view = view;
        this.view.onClickButton(this.handleButtonClick.bind(this)); // Připojení události
    }

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

// Použití
const model = new DataModel();
const view = new TextView(); // Reálné UI
const presenter = new Presenter(model, view);