Ho letto su MVP, in particolare Supervision Controller. Una cosa che sto avendo difficoltà a capovolgere è come la Vista interagisce con il Modello.
Ho capito che il Presenter dovrebbe aggiornare il Modello e che la Vista si legge dal Modello. Il Presenter può anche aggiornare la vista tramite un'interfaccia. L'articolo di Martin Fowler su questo sembra mostrare proprio questo ( link ).
Tuttavia, altri articoli / blog mostrano la vista che aggiorna direttamente il modello ( link ).
So che questi sono solo schemi, quindi ci saranno diverse implementazioni, ma la vista che aggiorna il modello sembra che stia facendo molto di più di quanto dovrebbe.
Per esempio, ho avuto una classe di persone che conteneva un nome e un numero di telefono. La vista può visualizzare questo nome e numero e un pulsante di invio per modificare il nome e il numero della persona. Quando si fa clic sul pulsante di invio, mi aspetto che l'aggiornamento venga gestito nel Presenter e non nella Vista. Tuttavia, l'articolo che ho fatto riferimento propone che la vista possa aggiornare direttamente il modello.
Quindi, la vista dovrebbe sempre aggiornare il modello? O dovrebbe essere gestito solo dal Presentatore?
EDIT:
Codice dell'articolo MSDN:
public class PersonalDataView : UserControl, IPersonalDataView
{
protected TextBox _firstNameTextBox;
public void SetPersonalData(PersonalData data)
{
_firstNameTextBox.Value = data.FirstName;
}
public void UpdatePersonalData(PersonalData data)
{
data.FirstName = _firstNameTextBox.Value;
}
}