MVP. Должны ли представления иметь возможность вызывать методы презентатора напрямую или всегда вызывать события? - PullRequest
2 голосов
/ 05 февраля 2010

Я уже некоторое время использую шаблон MVP с ASP.NET. Я придерживаюсь определенной схемы вызова событий докладчика из представления.

Меня поразило, что я могу представить методы в презентаторе, которые представление может вызывать напрямую.

Технически, использование прямых методов требует меньшего количества кода. Другое преимущество заключается в том, что я склонен делить докладчиков по нескольким представлениям, которые предлагают аналогичную функциональность. Это означает, что иногда некоторые обработчики событий вынуждены регистрироваться в представлении, только для соответствия интерфейсу общего докладчика, но затем вообще не используются в этом конкретном представлении.

Примером этого может быть просмотр дневника, который в одном представлении позволяет вам отменить встречу, а в другом - нет. Остальные события докладчика для загрузки данных и сохранения встречи используются в обоих случаях. Я не хочу писать двух отдельных докладчиков, которые почти предлагают одинаковую функциональность.

Мне бы хотелось услышать, что думают другие, кто активно использует MVP. Есть ли причины, по которым вы можете подумать, почему прямые вызовы методов из представления в презентатор не годятся в MVP?

Ответы [ 3 ]

4 голосов
/ 05 февраля 2010

Я использую прямые вызовы методов и не вижу какой-либо другой причины определять события в докладчике. То, что вы используете с событиями, называется стилем «Наблюдатель». Он предлагает полное отделение View от Presenter, но с дополнительной сложностью.

2 голосов
/ 20 января 2012

Мы можем написать интерфейс, который содержит все методы, которые мы хотим вызвать из представления. Ведущий будет реализовывать этот интерфейс. Затем мы можем передать экземпляр этого интерфейса для просмотра, и view может вызвать методы этого интерфейса. Это уменьшит связь между двумя.

2 голосов
/ 14 сентября 2010

Если ваш взгляд вызывает непосредственно докладчика, то он будет тесно связан, как в mvc.Я не понимаю, почему некоторые фреймворки используют этот подход, а не вызывают события на представлении.

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