Шаблон проектирования Model-View-Controller
При сравнении объектно-ориентированной SCADA (где бизнес-логика отделена от представления) с тег-ориентированной SCADA (где мнемосхемы неразрывно связаны со скриптами) напрашивается аналогия с популярным в среде веб-программирования паттерном проектирования Model-View-Controller (MVC).
Архитектура MVC
View (Представление)
Шаблон пользовательского интерфейса — формирует картинку, которую видит пользователь на экране (мнемосхемы, формы ввода, кнопки, тексты, графики, рисунки и т. п.).
Model (Модель)
Модуль бизнес логики — обрабатывает данные введённые пользователем и предоставляет данные для пользовательского интерфейса (визуализации).
Controller (Контроллер)
Модуль взаимодействия между пользовательским интерфейсом и моделью.
Модель неизменна (она одна в отличие от шаблонов и контроллеров), она содержит всю бизнес-логику для обращения к базе данных и обработки данных. Информация, предоставленная моделью, может быть визуализирована разными способами (таблица, столбиковая диаграмма, график), в зависимости от желания пользователя. Контроллер не содержит бизнес-логику, он только передаёт модели запрос пользователя.
Контроллер отделяет бизнес-логику от графики. Модуль представления может выбирать необходимый контроллер, в зависимости от реакции пользователя. А контроллер подставляет данные, предоставленные моделью, в необходимый шаблон представления.
Пример
Пользователи: француз и немец.
База данных: содержит два варианта перевода русской документации — немецкий и французский.
Пользовательский интерфейс имеет кнопку переключения языков: немецкий и французский.
Модель умеет извлекать из базы данных оба варианта перевода.
Когда немец выбирает немецкий язык, тогда Представление вызывает немецкий Контроллер, который обращается к базе данных за немецкий переводом и
выводит его в немецком Представлении.
Когда француз выбирает французский язык, тогда Представление вызывает французский Контроллер, который обращается к базе данных за французским переводом и
выводит его во французском Представлении.
Навигатор по программному обеспечению для автоматизации производства
Краткое введение в объектно-ориентированное программирование