Similar presentations:
mvc
1.
MVC (Model View Controller)2.
ОпределениеМодель — основные данные и логика, которая
определяет взаимодействие с этими данными.
Вид — отображение данных пользователю. Реагирует
на действия пользователя, передавая их контроллеру.
Контроллер — обрабатывает действия пользователя
передавая команды модели.
2
3.
ОпределениеТонкая модель (модель содержащая исключительно
данные) и Толстая модель (полноценная модель
содержащая логику приложения)
Активный Вид, который знает о Модели и сам берет из
нее необходимые данные. Пассивный Вид, которому
данные поставляет Контроллер. В этом случае Вид с
Моделью никак не связан.
Толстый (ТТУК) контроллер содержит логику. Тонкий
контроллер отвечает за:
3
-приём
запроса от пользователя;
4.
Взаимодействие4
5.
ВзаимодействиеМодель – это самая независимая часть системы. Она
не зависит от View & Controller. Модель не может
использовать классы из разделов View & Controller.
Основное ограничение вида (View) – вид не может
менять модель. Классы вида могут обращаться к
модели за данными или подписываться на события,
но менять модель классы View не могут.
Основное ограничение контроллера – он не
занимается отображением данных. Контроллер
5
обрабатывает
действия пользователя и меняет в
6.
Взаимодействие6
7.
Взаимодействие7
8.
Пример использования MVC в ПК ГлобусМоделью выступает ГИС-платформа,
контроллером - приложение, а визуализацию
осуществляет ВизГлоб.
При этом приложение зависит как от ГИСплатформы, так и от ВизГлоба. ГИС-платформа и
ВизГлоб могут функционировать независимо друг
от друга. Например, комплекс может быть запущен
в режиме 2D (ВизПлейн) без использования 3D
(ВизГлоба).
8
9.
ПроблемыВизПлейн на данный момент имеет зависимость
от ГИС-платформы, что нарушает принципы MVC.
Из-за этого при изменении в ГИС-платформе или
ВизПлейне необходимо иногда выкачивать
последнюю версию ВизПлейна, даже если не
планируется его модификация.
9
10.
Возможные ошибкиИзменение данных происходит напрямую через
виджет, минуя контроллер.
Инициализация данных в UI части приложения,
например, в классе global_scene_ui.
Смешение в Контроллере бизнесс-логики и GUI-логики.
10