Middle
Mi az MVP architektúrális minta?
sobes.tech MI
Válasz az MI-től
Az MVP (Model-View-Presenter) egy architektúrális minta, amely a üzleti logika, adatok és felhasználói felület szétválasztására szolgál.
Fő komponensek:
- Model: Az adatok és az üzleti logika reprezentációja. Nem rendelkezik ismeretekkel a View vagy a Presenter felől.
- View: Megjeleníti az adatokat, biztosítja a felhasználói felületet, és átirányítja a felhasználói műveleteket a Presenternak. Nem tartalmaz üzleti logikát. Passzív, és csak a Presenter által kapott adatokat mutatja.
- Presenter: Közvetítőként működik a Model és a View között. Kezeli a felhasználói felület eseményeit, lekéri az adatokat a Modelből, és frissíti a View-t. Tartalmazza a megjelenítési logikát, de nem az üzleti logikát. Kezeli a View állapotát.
Interakció:
- A felhasználó interakcióba lép a View-val.
- A View átadja az eseményt a Presenternek.
- A Presenter feldolgozza az eseményt:
- Frissíti a Modelt, ha szükséges.
- Lekéri az adatokat a Modelből.
- Frissíti a View-t az új adatokkal.
Előnyök:
- Javított tesztelhetőség (a Presenter és a Model függetlenül tesztelhető a View-tól).
- Felelősségek szétválasztása.
- Jobb karbantarthatóság.
Példa (séma):
// Modell
class DataModel {
getData() {
// ... adatok lekérésének logikája ...
return { message: "Helló a modellből!" };
}
}
// Nézet (pszeudó UI kód)
class TextView {
display(data) {
// Szöveg frissítése a képernyőn
console.log(data.message);
}
onClickButton(handler) {
// Handler csatolása a gombhoz
}
}
// Presenter
class Presenter {
constructor(model, view) {
this.model = model;
this.view = view;
this.view.onClickButton(this.handleButtonClick.bind(this)); // Esemény kötés
}
handleButtonClick() {
const data = this.model.getData();
this.view.display(data);
}
}
// Használat
const model = new DataModel();
const view = new TextView(); // Valós UI megjelenés
const presenter = new Presenter(model, view);