На главную
К шаблонам проектирования также относят пришедшую из языка Smalltalk
схему, которая известна под названием Model-View-Controller
(модель-представление-контроллер).
В литературе встречаются два варианта описания этой парадигмы
проектирования. Рассмотрим каждый из них:
1 вариант
В соответствии с этой трактовкой Model-View-Controller состоит из трех
типов объектов:
Контроллер - является посредником между моделью и представлением.
Модель - обрабатывает полученные данные в соответствии с
задачами, которые должно выполнить приложение. Здесь реализуются все
основные алгоритмы программы.
Представление - обеспечивает интерфейс с пользователем, т.е.
используется для непосредственного ввода и вывода данных.
Взаимоотношение между модулями этой модели можно изобразить так:
В данной схеме модель и представление ничего не знают друг о друге.
Ответственность за корректное отображение модели полностью возлагается
на контроллер.
2 вариант
В соответствии с этой трактовкой Model-View-Controller делится на 3
части:
Контроллер - принимает входные данные.
Модель - обрабатывает полученные данные в соответствии с
задачами, которые должно выполнить приложение. Здесь реализуются все
основные алгоритмы программы.
Представление - выводит на экран (или другое устройство вывода)
результат обработки данных.
Простейшая схема взаимодействия между тремя модулями для второго
варианта:
При получении входных данных контроллер должен сообщить об этом модели.
Модель обрабатывает данные. Получив результат, модель в свою очередь
должна проинформировать об этом представление.
Иногда также возможна связь между контроллером и представлением
(например, для того, чтобы сообщить пользователю об ошибке ввода).
С одной моделью может быть связано несколько представлений. Например,
одни и те же данные могут быть представлены в виде текста, графика и
диаграммы. При этом можно увеличивать количество представлений, не
изменяя саму модель.
Заключение
Первая трактовка парадигмы Model-View-Controller более распространена в
приложениях Windows, которые как правило обладают единым интерфейсом для
ввода и вывода. Вторая трактовка может быть использована в системах, где
ввод данных осуществляется с помощью внешних датчиков (например,
измерители давления на метеорологической станции), а также при
взаимодействии между приложениями или в распределенных системах (если
они не обладают единым интерфейсом ввода/вывода).
Основное преимущество организации приложения в соответствии со схемой
Model-View-Controller заключается в том, что такое приложение в
дальнейшем легче модифицировать. Например, в случае изменения критериев
вывода данных достаточно изменить модуль View, отвечающий за вывод
информации. При этом модули Controller и Model останутся нетронутыми.