Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Java.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
3.45 Mб
Скачать

Тема 7.2 Архитектура mvc

Визуальный компонент можно представить себе как элемент, сочетающий следующие характеристики.

  • Способ отображения на экране.

  • Реакция на действия пользователя.

  • Информация, связанная с данным компонентом.

Этими тремя характеристиками компонент обладает независимо от того, какая архитектура использовалась при его создании, тем не менее одна из архитектур с честью выдержала испытания временем и доказала свою эффективность. Это архитектура "модель-представление-контроллер" (MVC –Model-View-Controller).

Преимущество данной архитектуры состоит в том, что каждая ее составляющая в точности соответствует одной из характеристик компонента. Модель задает состояние компонента. Например, для флажка опций модель содержит признак того, установлен или сброшен флажок. Представление определяет, как компонент будет отображаться на экране, в том числе как будет представлено текущее состояние модели. Контроллер обеспечивает реакцию компонента на действия пользователя. Например, когда пользователь щелкает на флажке опций, реакцией контроллера является изменение модели (установка сброшенного флажка или сброс установленного). Кроме того, в ответ на действия пользователя обновляется представление. Разделяя компонент на модель, представление и контроллер, можно добиться того, что реализация одной части не будет оказывать влияния на остальные две. Например, разные представления могут отображать один и тот же компонент разными способами; при этом модель и контроллер остаются неизменными.

Несмотря на то что принципы архитектуры MVC выглядят очень привлекательно, в случае компонентов Swing разделение функций представления и контроллера не дает ощутимых преимуществ. Поэтому в Swing используется модифицированный вариант MVC, в котором представление и контроллер объединены в единый элемент, называемый представителем пользовательского интерфейса. Подход, используемый в Swing, известен как архитектура "модель-представитель" или архитектура с выделенной моделью. Таким образом, несмотря на то, что компоненты Swing похожи на MVC, их нельзя рассматривать как классическую реализацию данной архитектуры.

Настраиваемые стили Swing стали возможными благодаря использованию архитектуры "модель-представитель". Поскольку представление и контроллер отделены от модели, их можно заменить, не затрагивая механизмов взаимодействия компонентов с программой: С другой стороны, модель можно модифицировать, не изменяя при этом внешний вид элемента и его реакцию на действия пользователя.

Поддержка архитектуры "модель-представитель" обусловливает наличие компонентах Swing двух объектов. Первый из них представляет модель, второй соответствует представителю пользовательского интерфейса. Модели определяются посредством интерфейсов, например, модель для кнопки определена с помощью интерфейса ButtonModel, Представителями пользовательского интерфейса являются подклассы ComponentUI. Например, в роли представителя для кнопки выступает объект ButtonUI. В обычных условиях программа не взаимодействует с представителем интерфейса.