Опубликован: 18.09.2006 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 8:

Образцы проектирования (продолжение)

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >

Реализация. Основные шаги реализации следующие:

  • Отделить взаимодействие человека с системой от базовых функций самой системы. Для этого необходимо выделить структуру данных, с которыми система работает, и набор необходимых для функционирования системы операций над ними.
  • Реализовать механизм передачи изменений. Для этого можно воспользоваться образцом проектирования Подписчик (иначе называемым Наблюдатель, Observer).
  • Спроектировать и реализовать необходимые представления.
  • Спроектировать и реализовать необходимые обработчики действий пользователя.
  • Спроектировать и реализовать связь между обработчиком и представлением. Обычно представление должно инициализировать соответствующий обработчик. Для этого можно, например, использовать образец проектирования Метод порождения (Factory Method).
  • Реализовать построение системы из компонентов и инициализацию компонентов.

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

  • Динамические представления, создаваемые во время работы приложения.
  • Подключаемые элементы управления, которые могут быть включены во время работы приложения. Например, переключение из режима "новичок" в режим "эксперт".
  • Инфраструктура и иерархия представлений и обработчиков.

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

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

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

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

Следствия применения образца.

Достоинства:

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

Недостатки:

  • Возрастание сложности разработки.
  • Потери в производительности из-за необходимости обработки запросов пользователей сначала в обработчиках, затем в моделях, а затем во всех обновляемых компонентах.
  • Если не оптимизировать производимые обновления аккуратно, чаще всего в ходе работы происходит много ненужных вызовов операций, обновляющих представления и обработчики.
  • Представления и обработчики связаны очень тесно, из-за чего эти компоненты почти никогда нельзя переиспользовать по отдельности.
  • И представления, и обработчики достаточно тяжело использовать без соответствующей им модели.
  • Представления и обработчики наверняка потребуют изменений при их переносе на другую платформу или в другую библиотеку элементов графического интерфейса пользователя.
  • Данный образец тяжело использовать в большинстве средств разработки GUI, поскольку они чаще всего определяют собственные стратегии обработки событий и стандартные обработчики для многих событий, например, для нажатия правой кнопки мыши.

Примеры. Впервые этот архитектурный стиль был использован при проектировании библиотеки разработки пользовательского интерфейса для языка Smalltalk [1]. С тех пор создатели множества подобных каркасов и библиотек используют те же принципы.

Еще один пример библиотеки для разработки пользовательского интерфейса, построенного на основе данного стиля — библиотека MFC (Microsoft Foundation Classes) от Microsoft. В ней используется более простой вариант стиля — с объединенными представлениями и обработчиками. Такая схема получила название документ-представление (Document-View): документы соответствуют моделям, представления объединяют функции представлений и обработчиков.

Такое объединение часто имеет смысл, поскольку представления и обработчики тесно связаны и практически не могут использоваться друг без друга. Их разделение на отдельные компоненты должно обосновываться серьезными причинами.

Последний пример использования этого стиля — архитектура современных Web-приложений, т.е. бизнес-приложений с пользовательским интерфейсом на основе HTML и связью между отдельными элементами, построенной на базе основных протоколов Интернет. В ней роль модели играют компоненты, реализующие бизнес-логику и хранение данных, а роль представлений и обработчиков исполняется HTML-страничками и HTML-формами, статичными или динамически генерируемыми. Далее в этом курсе построение таких приложений будет рассматриваться более детально, поэтому образец "данные–представление–обработка" имеет большое значение для дальнейшего изложения.

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?

 

Андрей Швецов
Андрей Швецов
Россия, Александровск, школа-гимназия №2 им. Островского, 2005
Анна Оганян
Анна Оганян
Россия, Москва, МГОУ