Шаблон проектирования Model-View-Controller

Model-View-Controller

 

Шаблон проектирования Model-View-Controller

При сравнении объектно-ориентированной SCADA (где бизнес-логика отделена от представления) с тег-ориентированной SCADA (где мнемосхемы неразрывно связаны со скриптами) напрашивается аналогия с популярным в среде веб-программирования паттерном проектирования Model-View-Controller (MVC).

Архитектура MVC

View (Представление)

Шаблон пользовательского интерфейса — формирует картинку, которую видит пользователь на экране (мнемосхемы, формы ввода, кнопки, тексты, графики, рисунки и т. п.).

Model (Модель)

Модуль бизнес логики — обрабатывает данные введённые пользователем и предоставляет данные для пользовательского интерфейса (визуализации).

Controller (Контроллер)

Модуль взаимодействия между пользовательским интерфейсом и моделью.

Модель неизменна (она одна в отличие от шаблонов и контроллеров), она содержит всю бизнес-логику для обращения к базе данных и обработки данных. Информация, предоставленная моделью, может быть визуализирована разными способами (таблица, столбиковая диаграмма, график), в зависимости от желания пользователя. Контроллер не содержит бизнес-логику, он только передаёт модели запрос пользователя.

Контроллер отделяет бизнес-логику от графики. Модуль представления может выбирать необходимый контроллер, в зависимости от реакции пользователя. А контроллер подставляет данные, предоставленные моделью, в необходимый шаблон представления.

Пример

Пользователи: француз и немец.
База данных: содержит два варианта перевода русской документации — немецкий и французский.
Пользовательский интерфейс имеет кнопку переключения языков: немецкий и французский.
Модель умеет извлекать из базы данных оба варианта перевода.
Когда немец выбирает немецкий язык, тогда Представление вызывает немецкий Контроллер, который обращается к базе данных за немецкий переводом и выводит его в немецком Представлении.
Когда француз выбирает французский язык, тогда Представление вызывает французский Контроллер, который обращается к базе данных за французским переводом и выводит его во французском Представлении.