Это почти MVP в том смысле, что ваш Presenter отсоединен от представления таким образом, что при обновлении состояния пользовательского интерфейса он делает это через интерфейс IFooView
.Однако наличие в презентаторе метода, соответствующего стандартному обработчику событий .NET, мне кажется неправильным.Я бы заставил IFooView
вызвать событие, когда происходит нажатие кнопки, тогда ваша страница может выполнить задачу обработки нажатия кнопки, как вы это делаете в настоящее время, а затем вызвать событие, которое обрабатывает ваш Presenter.Это событие может быть более тесно связано с доменом, например, вы можете захотеть, чтобы такое событие, как RecordUpdated
, было выставлено через IFooView
.
. Это упростит предоставление фиктивной реализации IFooView
.для модульного тестирования, что, в конце концов, является большим преимуществом использования шаблона MVP / MVC / MVVM.
Если у вас нет данных, поступающих от серверной службы или базы данных, то в случаепростые приложения - это нормально, что выступающий также берет на себя роль модели.Это случай в вашем тривиальном примере.То же самое можно сделать в MVVM, где ViewModel также может взять на себя обязанности модели.Тем не менее, я бы порекомендовал создать модель, если вы делаете что-то нетривиальное.В вашем случае докладчик делегировал бы Модель для поддержания состояния и использовал бы своего рода «службу» для сохранения изменений в этой модели или извлечения объектов модели из веб-служб.