Если представление не имеет ничего конкретного в своем интерфейсе и вызывает простые методы презентатора для обработки событий и не имеет каких-либо официальных EventHandlers? НапримерWebforms MVP Пассивный просмотр - обработка событий
// ASPX
protected void OnSaveButtonClicked(object sender, EventArgs e)
{
_Presenter.OnSave();
}
Или вид у EventHandlers событий определены в интерфейсе и связать эти вверх явно контролировать события на странице
// 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;
}
Второй кажется, много сантехнического кода, чтобы добавить повсюду.
Мое намерение состоит в том, чтобы понять преимущества каждого стиля, а не просто полный ответ на его использование. Мои основные цели - ясность и высокая ценность. Важна общая тестируемость, но я бы не стал жертвовать простотой и ясностью дизайна, чтобы иметь возможность добавлять еще один тип теста, который не приводит к слишком большому выигрышу по сравнению с уже имеющимися тестовыми примерами с более простым дизайном. Если выбор дизайна отличается большей тестируемостью, пожалуйста, включите пример (псевдокод в порядке) того типа теста, который он теперь может предложить, поэтому я могу принять решение, если я достаточно ценю этот тип дополнительного теста. Благодаря!
Обновление: У меня вопрос о необходимости уточнения?