Ведущий выполняет логику графического интерфейса в шаблоне MVP? - PullRequest
10 голосов
/ 06 февраля 2012

Мы работаем с шаблоном MVP, и мне было интересно, как работать с действиями GUI.

Например, когда пользователь хочет удалить строку из сетки, он нажимает кнопку удаления.На этом этапе вы можете сделать две вещи:

1) Позвонить на _presenter.DeleteRow(), а затем ведущий позвонит на _view.SelectedRow.Затем докладчик вызывает view.AskUserForConfirmation(), и когда он возвращается DialogResult.OK, докладчик фактически удаляет базовый объект и обновляет сетку.

2) Форма запрашивает у пользователя подтверждение, а когда DialogResultравно OK, тогда presenter.Delete(myObject) вызывается ИЛИ presenter.Delete() вызывается и в методе Delete объект извлекается путем вызова _view.SelectedRow.

Как вы справляетесь с такими ситуациями?

Ответы [ 2 ]

4 голосов
/ 06 февраля 2012

Шаблон MVP должен разделять вашу логику, представление и доступ к данным.Поэтому, пытаясь решить, куда что-то пойти, спросите себя, есть ли в том, что вы пытаетесь сделать, настоящая бизнес-логика.

Хотите, чтобы на вашем бизнес-уровне была логика отображения всплывающего окна?Возможно нет.Это просто подтверждающее сообщение.Вы можете хотеть иметь вспомогательный класс, который генерирует ваше стилизованное всплывающее окно, но это отдельно от вашего уровня Presenter.

2 голосов
/ 06 февраля 2012

Вариант 2. Запрос подтверждения является обязанностью пользовательского интерфейса, и докладчику не о чем беспокоиться. Я не привлекаю докладчика до тех пор, пока не придет время что-то сделать с моделью, или пока не понадобится какая-то сложная бизнес-логика.

Это не означает, что опция 1 недействительна. Это просто создает ненужную болтовню представления / докладчика, по моему мнению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...