Middle
Ce este modelul arhitectural MVP?
sobes.tech AI
Răspuns de la AI
MVP (Model-View-Presenter) este un model arhitectural pentru separarea logicii de business, a datelor și a interfeței utilizatorului.
Componente cheie:
- Model: Reprezintă datele și logica de business. Nu are cunoștințe despre View sau Presenter.
- View: Afișează datele, oferă interfața utilizatorului și redirecționează acțiunile utilizatorului către Presenter. Nu conține logică de business. View-ul este pasiv și afișează doar datele primite de la Presenter.
- Presenter: Acționează ca un intermediar între Model și View. Procesează evenimentele interfeței utilizatorului, extrage date din Model și actualizează View-ul. Conține logica de prezentare, dar nu logica de business. Gestionează starea View-ului.
Interacțiune:
- Utilizatorul interacționează cu View-ul.
- View-ul delegă acțiunea către Presenter.
- Presenter-ul procesează acțiunea:
- Actualizează Model-ul dacă este necesar.
- Solicită date din Model.
- Actualizează View-ul cu noile date.
Avantaje:
- Testabilitate îmbunătățită (Presenter-ul și Model-ul pot fi testate independent de View).
- Separarea responsabilităților.
- Întreținere mai bună.
Exemplu (schematic):
// Model
class DataModel {
getData() {
// ... logică de obținere a datelor ...
return { message: "Salut din model!" };
}
}
// Vizualizare (pseudo-cod UI)
class TextView {
display(data) {
// Actualizează textul pe ecran
console.log(data.message);
}
onClickButton(handler) {
// Atașează handler la buton
}
}
// Presenter
class Presenter {
constructor(model, view) {
this.model = model;
this.view = view;
this.view.onClickButton(this.handleButtonClick.bind(this)); // Legare eveniment
}
handleButtonClick() {
const data = this.model.getData();
this.view.display(data);
}
}
// Utilizare
const model = new DataModel();
const view = new TextView(); // Vizualizare UI reală
const presenter = new Presenter(model, view);