Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Каркасы

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

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

Каркас - это больше чем механизм. Фактически можно считать, что каркас - это род микроархитектуры, включающий в себя множество механизмов, совместно ра­ботающих для разрешения типичной для данной предметной области проблемы. Специфицируя каркас, вы описываете скелет архитектуры со всеми управляющи­ми органами, которые раскрываются пользователям, желающим адаптировать этот каркас для применения в нужном контексте.

В UML каркас моделируется в виде стереотипного (см. главу 6) пакета (см. гла­ву 12). Раскрыв этот пакет, вы увидите механизмы, существующие в любом из видов системной архитектуры (см. главу 2). В частности, можно обнаружить параметри­зованные кооперации, а также прецеденты, поясняющие, как работать с каркасом, или простые кооперации, представляющие набор абстракций, на базе которых мож­но строить систему, например путем порождения производных классов.

На рис. 28.3 показан такой каркас, названный ЦиклическийИсполнитель. Среди прочего каркас включает кооперацию (ОбщиеСобытия), охватывающую множество классов событий (см. главу 20), и механизм (ОбработчикСобытий) для циклической обработки событий. Клиент, построенный на базе этого каркаса (к примеру, СердечныйСтимулятор) может пользоваться абстракциями из ко­операции ОбщиеСобытия путем порождения производных классов, а также при­менять механизм ОбработчикСобытий.

Примечание Каркасы отличаются от обычных библиотек классов. Библиотека классов содержит абстракции, конкретизируемые или вызываемые

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

Типичные приемы моделирования Образцы проектирования

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

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

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

Моделирование образца проектирования осуществляется так:

1. Идентифицируйте типичное решение типичной проблемы и материализуй­те его в виде механизма.

2. Смоделируйте механизм в виде кооперации (см. главу 27), описав ее струк­турный и поведенческий аспекты.

3. Идентифицируйте те элементы образца проектирования, которые должны быть связаны с элементами в конкретном контексте, и изобразите их в виде параметров кооперации.

Например, на рис. 28.4 показано использование образца проектирования Коман­да (см. Gamma et al., "Design Patterns". Reading, Massachusetts: Addison-Wesley, 1995). Документация гласит, что этот образец «инкапсулирует запрос в виде объек­та, позволяя тем самым параметризовать клиенты, выдающие разные запросы, ста­вить запросы в очередь и протоколировать их, а также поддерживать операции, до­пускающие отмену». Как видно из модели, этот образец имеет четыре параметра, которые должны быть связаны с элементами в данном контексте. Модель показы­вает пример такого связывания, где с параметрами образца связаны классы Прило­жение, КомандаВставки, КомандаОткрытия, ПунктМеню и Документ.

Обратите внимание на то, что КомандаВставки и КомандаОткрытия связа­ны несколько иначе, чем остальные параметры. Оба являются подклассами клас­са Команда, предоставляемого самим образцом проектирования. Если вы пони­маете, как функционирует образец проектирования, то, глядя на эту модель, сразу догадаетесь, как в данном контексте совместно работают эти пять классов. Весьма вероятно, что в вашей системе этот образец будет использоваться неоднократно, быть может, с различными связями. Возможность повторного использования об­разца проектирования и делает процесс разработки на основе образцов столь эф­фективным.

Примечание Хотя на рисунке этого не видно, классификаторы, которые ма­териализуют данный образец проектирования (Приложение, КомандаВставки, КомандаОткрытия,ПунктМеню и Доку­мент) по своей структуре изоморфны обобщенному образцу, по­казанному на рис. 28.5. Поэтому там, где в обобщенном образце есть ассоциация между Клиентом и Получателем, существует и ассоциация между Приложением и Документом. Применение образца означает конкретизацию как его сущностей, так и свя­зей между ними.

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

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

На рис. 28.6 показана диаграмма последовательностей (см. главу 18), представ­ляющая поведение этого образца.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]