Шаг 217.
Унифицированный язык моделирования UML.
Моделирование образцов проектирования

    На этом шаге рассмотрим типичные приемы моделирования образцов проектирования в UML.

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

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

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

    Чтобы смоделировать образец проектирования, необходимо:

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

    В качестве примера на рис. 1 показано использование образца проектирования Command (см. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. – СПб: Питер, 2001.).


Рис.1. Моделирование образца проектирования

    Как установлено в описании данного образца, он "инкапсулирует запрос в виде объекта, позволяя тем самым параметризовать клиентов, выдающих разные запросы, ставить запросы в очередь и протоколировать их, а также поддерживать операции, допускающие отмену". Как видно из модели, этот образец проектирования имеет три параметра, которые, будучи применены к нему, должны быть связаны с элементами в данном контексте. Модель демонстрирует два соединения, в которых классы PasteCommand (КомандаВставки) и OpenCommand (КомандаОткрытия) привязываются к параметрам образца.

    Здесь параметрами являются AbstractCommand (АбстрактнаяКоманда), которая должна быть связана с таким же абстрактным суперклассом в каждом случае, ConcreteCommand (КонкретнаяКоманда), которая связывается с различными конкретными классами в разных случаях связывания, и Receiver (Приемник), связываемый с классом, над которым команда осуществляет действие. Класс Command (Команда) может быть создан образцом, но оформление его в виде параметра позволяет создавать множество иерархий команд.

    PasteCommand и OpenCommand являются подклассами Command. Весьма вероятно, что ваша система будет использовать этот образец много раз с разнообразными связываниями. Возможность такого повторного использования образца проектирования делает процесс разработки на основе образцов весьма эффективным.

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

    Рассмотрим рис. 2, где показана диаграмма классов, представляющая структуру этого образца.


Рис.2. Моделирование структурного аспекта образца проектирования

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


Рис.3. Моделирование поведенческого аспекта образца проектирования

    Отметим, что она носит характер предположения: образец проектирования не является жесткой конструкцией.

    На следующем шаге рассмотрим типичные приемы моделирования архитектурных образцов в UML.




Предыдущий шаг Содержание Следующий шаг