Паттерны в архитектуре smac-metro - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Молодежное движение «россия молодая» 1 12.73kb.
Словарь архитектурных терминов Капитель 1 26.61kb.
Глоссарий по культурологии 5 780.79kb.
Гкоу ро лицей-интернат «Педагогический» г. Таганрога Французский... 1 213.84kb.
Устный журнал «Отражение Отечественной войны 1812 года в архитектуре» 1 108.73kb.
Презентация фотовыставки «Экуменизм в румынской архитектуре» 1 17.64kb.
Руководство по архитектуре AlwaysOn. Построение 9 516.29kb.
Тема какой? Какая? Какие? 7 736.7kb.
Сводчатая базилика. Время приблизительно с 980 до 1080 в архитектуре... 1 360.28kb.
Программа-минимум кандидатского экзамена по специальности 07. 4 435.06kb.
Конфликты между родителями: как они влияют на детей. «Влияют» Теория... 1 164.89kb.
Салаты / salads «колесо фортуны» (Эдвард Бёрн-Джонс) 350 “wheel of... 1 11.39kb.
Направления изучения представлений о справедливости 1 202.17kb.

Паттерны в архитектуре smac-metro - страница №1/1

Паттерны в архитектуре SMaC-Metro


см. диаграммы классов UML вот тут: patterns-for-smac.zargo

Model-View-Controller (Модель-Вид-Контроллер) либо Document-View (Документ-Вид) + Observer (наблюдатель)

=MVC=

Объяснение

Архитектура «Модель-Вид-Контроллер» обеспечивает гибкое двустороннее взаимодействие пользовательского интерфейса и внутреннего представления некоторой структуры данных.



Предложения

Интерфейс пользователя (Вид) = графическое представление карты MetroMap

Внутреннее представление (Модель) = сеть Петри petri_net

Контроллер (обеспечивает взаимодействие) = контроллер карты MapController. преобразует изменения сети Петри в изменения карты, и наоборот.

=Observer=

Объяснение

Позволяет одним объектам подписываться на (attach) и получать оповещения об изменении состояния других объектов (onChange). Можно также отписаться (detach).



Предложения

У нас будет меняться визуальное представление (карта) и модель (сеть Петри). Чтобы синхронизировать одно с другим, используется контроллер карты.



наблюдаемые объекты — сеть Петри (модель), графическое представление сети Петри (карта)

наблюдатель — контроллер карты (MapController)


Singleton (одиночка)


Объяснение

Singleton — это класс, который существует в единственном экземпляре.

Статический метод instance() возвращает указатель на этот экземпляр.

Предложения

Карта метрополитена MetroMap (по условию она единственная), контроллер карты MapController:




Composite (компоновщик)


Объяснение

Composite — это класс, предназначенный для единообразного представления как индивидуальных, так и составных объектов.

Компонующий класс имеет методы add, remove, children для добавления, удаления и получения списка составляющих его компонентов соответственно.

Удобное добавление: add() и remove() определены как защищенные (protected) и вызываются из конструктора и деструктора соответственно.



Предложения

- Карта метро MetroMap, перегон Span, участок пути Path, светофор Semaphore (графические элементы карты метро).

Карта состоит из станций и перегонов, перегоны состоят из нескольких участков пути и светофоров.

- Сама карта.




Command (команда)


Объяснение

Позволяет представить команды пользовательского интерфейса и программы, которые модифицируют редактируемый документ. У команды есть инициатор — вызывающая сторона (например, элемент меню) и исполнитель (класс, выполняющий указанное действие).



Предложения

Команды редактирования карты и добавления элементов на карту, команда сохранения карты, прочие команды меню и панели инструментов.

В нашем случае инициатором команд могут служить элементы меню (MenuItem) и кнопки палитры (PaletteItem), а исполнителем — класс контроллера карты (MapController). Такая реализация позволяет добиться синхронности модели (сети Петри petri_net) и вида (визуального представления карты MetroMap).

Например, конкретная команда палитры ConcretePaletteItem вызывает команду actionX() контроллера:




Iterator (итератор)


Объяснение

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



Предложения

Итераторы по сети Петри, обеспечивающие обход графа в ширину (в глубину?), обход по отдельности переходов и позиций. В традиции STL имена можно дать следующие:



  • begin()/end() — итераторы, стоящие на начале/конце всего графа;

  • tbegin/tend — аналогично по всем переходам (transitions)

  • pbegin/pend — аналогично по всем позициям (positions)


Decorator (Декоратор)


Объяснение

Позволяет расширять стандартную функциональность классов (как правило, обеспечивающих графический интерфейс).

Пример из Википедии:

http://upload.wikimedia.org/wikipedia/en/thumb/c/c6/uml2_decorator_pattern.png/400px-uml2_decorator_pattern.png

Предложение

Если нам понадобится каким-то образом расширить графический интерфейс, то это разумнее всего сделать путем «навешивания» декоратора (декораторов), обеспечивающих дополнительную функциональность.


Сериализация


Это не паттерн проектирования, но полезная штука. (Есть похожий паттерн, называется Memento (хранитель). Он позволяет получать «мгновенные снимки» класса и восстанавливать состояние класса по мгновенному снимку.)

Предложение

boost::serialization умеет сохранять классы, использующие STL-контейнеры. Для этого надо минимум кода (реализовать метод serialize и писать/читать сериализованные данные используя стандартный ввод/вывод C++).

http://www.boost.org/doc/libs/1_46_1/libs/serialization/doc/index.html




У меня ни копейки денег не бывает. Ну, бывает там миллион, два, три. Владимир Брынцалов
ещё >>