Middle
Cos'è il pattern architetturale MVP?
sobes.tech AI
Risposta dell'AI
L'MVP (Model-View-Presenter) è un pattern architetturale per separare la logica di business, i dati e l'interfaccia utente.
Componenti chiave:
- Model: Rappresenta i dati e la logica di business. Non ha conoscenza di View o Presenter.
- View: Visualizza i dati, fornisce l'interfaccia utente e reindirizza le azioni dell'utente al Presenter. Non contiene logica di business. La View è passiva e mostra solo i dati ricevuti dal Presenter.
- Presenter: Agisce come intermediario tra Model e View. Gestisce gli eventi dell'interfaccia utente, estrae i dati dal Model e aggiorna la View. Il Presenter contiene la logica di presentazione, ma non quella di business. Gestisce lo stato della View.
Interazione:
- L'utente interagisce con la View.
- La View delega l'azione al Presenter.
- Il Presenter elabora l'azione:
- Aggiorna il Model se necessario.
- Richiede dati dal Model.
- Aggiorna la View con i nuovi dati.
Vantaggi:
- Migliorabilità dei test (il Presenter e il Model possono essere testati indipendentemente dalla View).
- Separazione delle responsabilità.
- Migliore manutenibilità.
Esempio (schema):
// Modello
class DataModel {
getData() {
// ... logica di recupero dati ...
return { message: "Ciao dal modello!" };
}
}
// Vista (pseudo-codice UI)
class TextView {
display(data) {
// Aggiorna il testo sullo schermo
console.log(data.message);
}
onClickButton(handler) {
// Attacca il gestore al pulsante
}
}
// Presenter
class Presenter {
constructor(model, view) {
this.model = model;
this.view = view;
this.view.onClickButton(this.handleButtonClick.bind(this)); // Binding evento
}
handleButtonClick() {
const data = this.model.getData();
this.view.display(data);
}
}
// Uso
const model = new DataModel();
const view = new TextView(); // Vista reale UI
const presenter = new Presenter(model, view);