He estado leyendo sobre MVP, específicamente Supervising Controller. Una cosa que tengo dificultades para entender es cómo interactúa la Vista con el Modelo.
Entendí que el presentador debería actualizar el modelo y que la vista se lee desde el modelo. El presentador también puede actualizar la vista a través de una interfaz. El artículo de Martin Fowler sobre esto parece mostrar exactamente eso ( http://martinfowler.com/eaaDev/SupervisingPresenter.html ).
Sin embargo, otros artículos / blogs muestran la vista actualizando el modelo directamente ( https://blogs.msdn.microsoft.com/erwinvandervalk/2009/08/14/the-difference-between-model-view-viewmodel-and-other- patrones de presentación separados / ).
Sé que estos son solo patrones, por lo que habrá diferentes implementaciones, pero la vista que actualiza el modelo parece estar haciendo mucho más de lo que debería.
Digamos, por ejemplo, que tenía una clase de persona que contenía un nombre y número de teléfono. La vista puede mostrar este nombre y número y un botón de enviar para cambiar el nombre y el número de la persona. Cuando se hace clic en el botón Enviar, esperaría que la actualización se maneje en el Presentador, no en la Vista. Sin embargo, el artículo al que hice referencia propone que la vista puede actualizar directamente el modelo.
Entonces, ¿debería la vista actualizar el modelo? ¿O debería ser solo el presentador?
EDITAR:
Código del artículo de 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;
}
}