Может ли докладчик иметь состояние? (Шаблон MVP)

#design-patterns #mvp

#шаблоны проектирования #mvp

Вопрос:

Я читаю о шаблоне Model-View-Presenter, и я немного смущен: может ли презентатор иметь состояние? Или задача докладчика состоит только в том, чтобы группировать методы, содержащие бизнес-логику, и каждая информация о состоянии должна быть помещена в модель?

Вот пример сценария: предположим, мне нужно представить сортируемый список элементов по страницам. В этом случае представление должно просматривать элементы. Докладчик должен загрузить элементы для просмотра в модель. Куда должны идти 2 переменные состояния (тип сортировки и индекс текущей страницы), должны ли они считаться состоянием презентатора или частью модели?

Ответ №1:

Это явно не состояние приложения, а состояние просмотра. Не только потеря этого состояния не причинит большого вреда, но и не повлияет на бизнес-логику.

При этом я бы без колебаний поместил это дополнительное «состояние» в presenter или даже в view. Вероятно, вы реализуете это, используя либо HTTP-сеанс, либо файлы cookie на стороне клиента — эти стратегии сохранения, очевидно, предназначены для просмотра.