189.28K
Категория: ПрограммированиеПрограммирование

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
English     Русский Правила