Ich habe über MVP gelesen, insbesondere über Supervising Controller. Eine Sache, bei der ich Schwierigkeiten habe, meinen Kopf herumzureißen, ist die Interaktion der Ansicht mit dem Modell.
Nach meinem Verständnis sollte der Präsentator das Modell aktualisieren und die Ansicht aus dem Modell lesen. Der Präsentator kann die Ansicht auch über eine Schnittstelle aktualisieren. Martin Fowlers Artikel dazu scheint genau das zu zeigen ( http://martinfowler.com/eaaDev/SupervisingPresenter.html ).
Andere Artikel / Blogs zeigen jedoch die Ansicht, in der das Modell direkt aktualisiert wird ( https://blogs.msdn.microsoft.com/erwinvandervalk/2009/08/14/the-difference-between-model-view-viewmodel-and-other- getrennte Präsentationsmuster / ).
Ich weiß, dass dies nur Muster sind, daher wird es unterschiedliche Implementierungen geben, aber die Ansicht, die das Modell aktualisiert, scheint viel mehr zu tun, als es sollte.
Angenommen, ich hatte eine Personenklasse, die einen Namen und eine Telefonnummer enthielt. In der Ansicht können dieser Name und diese Nummer sowie eine Schaltfläche zum Senden angezeigt werden, um den Namen und die Nummer der Person zu ändern. Wenn Sie auf die Schaltfläche "Senden" klicken, wird erwartet, dass die Aktualisierung im Presenter und nicht in der Ansicht ausgeführt wird. In dem Artikel, auf den ich verwiesen habe, wird jedoch vorgeschlagen, dass die Ansicht das Modell direkt aktualisieren kann.
Sollte die Ansicht das Modell jemals aktualisieren? Oder sollte das nur vom Moderator erledigt werden?
BEARBEITEN:
Code aus dem MSDN-Artikel:
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;
}
}