Middle
Czym jest wzorzec architektoniczny MVP?
sobes.tech AI
Odpowiedź od AI
MVP (Model-View-Presenter) to wzorzec architektoniczny służący do oddzielenia logiki biznesowej, danych i interfejsu użytkownika.
Kluczowe komponenty:
- Model: Reprezentuje dane i logikę biznesową. Nie posiada wiedzy o View ani Presenter.
- View: Wyświetla dane, zapewnia interfejs użytkownika i przekierowuje działania użytkownika do Presenter. Nie zawiera logiki biznesowej. View jest pasywne i tylko wyświetla dane otrzymane od Presenter.
- Presenter: Działa jako pośrednik między Model a View. Obsługuje zdarzenia interfejsu użytkownika, pobiera dane z Model i aktualizuje View. Presenter zawiera logikę prezentacji, ale nie logikę biznesową. Zarządza stanem View.
Interakcja:
- Użytkownik wchodzi w interakcję z View.
- View deleguje akcję do Presenter.
- Presenter obsługuje akcję:
- Aktualizuje Model, jeśli to konieczne.
- Pobiera dane z Model.
- Aktualizuje View nowymi danymi.
Zalety:
- Lepsza testowalność (Presenter i Model mogą być testowane niezależnie od View).
- Podział odpowiedzialności.
- Lepsza utrzymanie.
Przykład (schemat):
// Model
class DataModel {
getData() {
// ... logika pobierania danych ...
return { message: "Witaj z modelu!" };
}
}
// Widok (pseudo-kod UI)
class TextView {
display(data) {
// Aktualizuj tekst na ekranie
console.log(data.message);
}
onClickButton(handler) {
// Podłącz obsługę do przycisku
}
}
// Presenter
class Presenter {
constructor(model, view) {
this.model = model;
this.view = view;
this.view.onClickButton(this.handleButtonClick.bind(this)); // Wiązanie zdarzenia
}
handleButtonClick() {
const data = this.model.getData();
this.view.display(data);
}
}
// Użycie
const model = new DataModel();
const view = new TextView(); // Rzeczywisty UI
const presenter = new Presenter(model, view);