¿La vista no tiene nada específico de evento en su interfaz y llama a los métodos simples del presentador para manejar eventos y no tiene EventHandlers oficial? Por ejemploVista pasiva MVP de Webforms: manejo de eventos
// ASPX
protected void OnSaveButtonClicked(object sender, EventArgs e)
{
_Presenter.OnSave();
}
o de que las vistas han manejadores de sucesos de eventos definidos en su interfaz y vincular a los que van explícitamente a controlar los acontecimientos en la página
// View
public interface IView
{
...
event EventHandler Saved;
...
}
// ASPX Page implementing the view
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
SaveButton.Click += delegate { Saved(this, e); };
}
// Presenter
internal Presenter(IView view,IRepository repository)
{
_view = view;
_repository = repository;
view.Saved += Save;
}
El segundo parece como un montón de código de plomería para añadir por todas partes.
Mi intención es comprender los beneficios de cada estilo y no solo una respuesta general para usar. Mis objetivos principales son la claridad y la comprobabilidad de alto valor. La capacidad de testamento en general es importante, pero no sacrifico la simplicidad y la claridad del diseño para poder agregar otro tipo de prueba que no conduzca a demasiada ganancia sobre los casos de prueba ya posibles con un diseño más simple. Si una opción de diseño no permite una mayor capacidad de prueba, incluya un ejemplo (el pseudo código es correcto) del tipo de prueba que ahora puede ofrecer, de modo que pueda tomar una decisión si valoro ese tipo de prueba adicional lo suficiente. ¡Gracias!
Actualización: ¿Mi pregunta necesita más aclaraciones?