BERDAFLEX Software Systems
Главная > Eclipse > Книги > Eclipse RCP. Файловый менеджер

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

  • Получить стабильный поток клиентов на ваш сайт
  • Эффективная работа с email рассылками
  • Доступ к интересам вашей ЦА
  • Оптимизация вашего сайта для поисковых систем Яндекс и Google
  • Нюансы контекстной рекламы Adwords
       Детали на сайте http://shareware-steps.ru
Больше продаж

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

Одним из самых известных и часто применяемых шаблонов проектирования является шаблон “Модель – Вид – Контроллер” (Model View Controller (MVC)).

6.1. Структура шаблона “Модель – Вид – Контроллер”

Рисунок 4.18. Структура шаблона “Модель – Вид – Контроллер”

Структура шаблона “Модель – Вид – Контроллер”

Модель (Model)

Модель представляет собой данные, с которыми оперирует приложение. Это могут быть как данные базы данных, так и любая другая структура данных описывающая некоторые объекты системы и их состояние.

Вид (View)

Вид представляет собой компонент системы для отображения состояния модели в понятном человеку представлении. Это могут быть диалоги, формы и другие визуальные и не визуальные (например, синтезатор речи) средства взаимодействия человека с системой. Вид не изменяет данные напрямую (режим только чтение), данные изменяются при помощи контроллера.

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

Контроллер является средством, при помощи которого пользователи взаимодействуют с системой. Это может быть клавиатура, манипулятор мышь и т. д. А также является управляющим элементом для обмена данными и сообщениями между видом и моделью.

Фактически, связка вида и контроллера является интерфейсом пользователя. Причем, если компоненты вида обычно можно повторно использовать в других компонентах системы, то контроллер часто является специфичным для данного конкретного случая

Модель не зависит ни от вида, ни от контроллера, что позволяет одновременно строить различные интерфейсы пользователя для взаимодействия с одной и той же моделью данных. Например, можно сделать как Java SWT или SWING десктопное приложение, так и WEB приложение для взаимодействия одними и теми же данными.

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

При пассивном режиме данные на клиентской стороне перечитываются при выполнении некоторых действий пользователя, например запроса на вывод информации об объектах.

При активном режиме вводятся дополнительные обработчики и слушатели сообщений, которые посылают компонентам уровня представления сообщения о том, что данные модели были изменены и требуется обновление данных на стороне клиента “View”.

Практическое применение шаблона MVC имеет как положительные, так и отрицательные стороны. Шаблон MVC может привести к увеличению сложности по обеспечению синхронизации данных и представления в простых приложениях.

6.2. Использование модели MVC в навигаторе файлов

Рисунок 4.19. Структура шаблона MVC в навигаторе файлов


На данный момент платформа eclipse предлагает две реализации шаблона MVC. Первый предназначен для работы с моделью данных, которая включает множество объектов. При этом в качестве интерфейса пользователя используются табличные или древовидные представления данных (компоненты TableView и TreeView).

Вторая реализация предназначена для работы с единичными экземплярами объектов. При этом используется механизм отображения (binding) атрибутов объекта на элементы управления формы. И хотя спецификация данного режима работы с объектами еще окончательно не утверждена, но ее уже можно успешно использовать для построения приложений.

В качестве модели даны файлового менеджера будет выступать виртуальная файловая система на основе проекта Apache Commons Virtual File System (VFS). Для навигации и отображения данных VFS будет использоваться панель с ранее созданной компонентой навигатора файлов.

Взаимосвязь с данными будет осуществляться посредством провайдера (provider), который будет преобразовывать данные модели в удобный для восприятия человеком формат.

6.3. Создаем панель навигатора файлов (Вид)

Визуальный редактор позволяет работать не только с компонентами, но и со специфическими для платформы eclipse элементами графического интерфейса пользователя, например с панелями (View).

Откроем в визуальном редакторе ранее созданную панель com.berdaflex.filearranger.views.ExplorerView .

При попытке добавить любой визуальный компонент на панель, будет предложено предварительно создать родительский контейнер. Для добавления родительского контейнера доступна опция “Create container” контекстного меню панели, которая автоматически создает компонент Composite:

public void createPartControl(Composite parent) {
  top = new Composite(parent, SWT.NONE);
}

Для того чтобы получить доступ к ресурсам модуля ранее созданной библиотеки swt компонент нужно добавить зависимость от данной библиотеки в файл манифеста:

Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 com.berdaflex.swt

Для того чтобы ресурсы ранее созданного модуля расширения с визуальными компонентами были доступны другим модулям, требуется перечислить в файле манифеста список экспортируемых пакетов. Например:

Export-Package: com.berdaflex.swt

Выбираем в палитре компонент опцию “Choose Bean” и в списке доступных бинов выбираем VfsExplorerComposite. Помещаем выбранный компонент в родительский контейнер.

Рисунок 4.20. Редактирование панели (View) в визуальном редакторе


Осталось назначить ресурсы изображений кнопкам и прототип интерфейса пользователя готов. Можно приступать к следующему этапу для связывания модуля представления с данными (виртуальной файловой системой).

Рисунок 4.21. Внешний вид прототипа файлового менеджера


Если запустить приложение, то видно, что наше приложение отображает созданные компоненты навигатора в панелях. Причем за процесс показа и свертывания дерева навигатора отвечает созданная ранее компонента.

6.4. Рекомендуемые ресурсы

Описание шаблона MVC в свободной энциклопедии http://en.wikipedia.org/wiki/Model-view-controller

Отображение данных в JFace http://wiki.eclipse.org/index.php/JFace_Data_Binding

Основные паттерны J2EE http://ru.sun.com/java/j2ee/index.html

Шаблон “Front Controller” http://ru.sun.com/pdf/patterns/pattern6.pdf

Rambler's Top100 Рейтинг@Mail.ru