Работа вида - это адаптер к технологии просмотра.В этом случае ваша технология представления скорее всего будет jQuery поверх HTML через JavaScript.Представление должно быть спроектировано так, чтобы оно делало три вещи:
- Знайте, когда происходят события, и сообщайте об этих событиях докладчику (это может быть косвенно, с использованием инфраструктуры обмена сообщениями, такой как postal.js )
- Скажите докладчику (когда его спросят) "каково значение x ", где x - это значение, представленное в виде.
- Принимать сообщения от докладчика (обычно с помощью прямого вызова метода) для изменения значений в представлении.
Представление в шаблоне пассивного представления - без учета состояния .Я повторяю, представление не представляет состояние .Под этим я подразумеваю, что докладчик представляет все состояние и знания о переходе между состояниями.Представление - это просто клей, который обеспечивает косвенную связь между докладчиком и реальной технологией представления. Помимо трех пунктов выше, в нем не содержится никаких сведений о том, что делать с информацией, содержащейся в нем .Это важно, потому что вы никогда не должны ожидать, что представление будет в согласованном состоянии.Вы всегда должны держать докладчика ответственным за управление состоянием представления.
Стек выше демонстрирует, как я предвижу взаимодействие модели, представления и докладчика, а также их взаимодействие.связь с технологией представления и контроллером.
- Браузер, HTML и DOM (управляемый с помощью jQuery) представляют собой технологию представления .Они по своей сути сложны и не способны представить вашу модель.
- представление защищает вашу логику от представления технологии .Он обеспечивает перенаправление, так что вы можете сосредоточиться на простом старом коде в Presenter .Представление должно использовать какой-либо тип обмена сообщениями для обратной связи с докладчиком.Это предотвращает двунаправленную зависимость между представлением и презентатором.Он также позволяет нескольким докладчикам манипулировать видом.
- презентатор должен отвечать за понимание абстрактной природы представления и должен управлять состоянием model .на основе его интерфейса к представлению.Он способен понять, как извлечь модель из контроллера и как сохранить модель обратно на сервер.
- модель представляет состояние в конкретный момент времени .Он также может служить DTO между контроллером и презентатором .В JavaScript легко и иногда предпочтительнее просто добавить поведение докладчика к модели .
- Контроллер координирует навигацию в приложении и отвечает заабстрагирование серверных сервисов от презентации.