Здравствуйте
Прочитал вдохновляющую статью про разные виды MV*. Осталась пара незакрытых вопросов.
Для начала выдержка из статьи, описывающая ответственность PresentationModel в одноименном паттерне. PresentationModel:
- Содержит логику пользовательского интерфейса: Так же, как и презентер, PresentationModel содержит логику пользовательского интерфейса. Когда вы нажимаете на кнопку, это событие направляется в PresentationModel, которая затем решает, что с ним делать.
- Предоставляет данные из модели для отображения на экране PresentationModel может преобразовывать данные из модели так, чтобы они были легко отображены на экране. Часто информация, содержащаяся в модели, не может непосредственно использоваться на экране. Вам, возможно, сначала потребуется преобразовать данные, их дополнить или собрать из нескольких источников. Это наиболее вероятно, когда у вас нет полного контроля над моделью. Например, если вы получаете данные от сторонних веб-сервисов или же из базы данных существующего приложения.
- Хранит состояние пользовательского интерфейса Зачастую пользовательский интерфейс должен хранить дополнительную информацию, которая не имеет ничего общего с моделью. Например, какой элемент выбран в данный момент на экране? Какие ошибки валидации произошли? PresentationModel может хранить эту информацию в свойствах.
Вопрос 1. Куда мне засунуть http-запросы? Например, веб-страница раз в секунду опрашивает сервер на предмет изменений. Где расположить этот setTimeout? В PrsentationModel? В Model? Где-то отдельно?
Вопрос 2. View-ов (и, соттветственно их презентаций) я так понимаю, может быть много? Например, по одному View на каждую форму. А что с моделью? Одна модель на всё приложение или по модели на каждый View?