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

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

    Механизм – это образец проектирования, примененный к сообществу классов. Например, существует типичная проблема проектирования, с которой сталкивается программист, пишущий на языке Java: как изменить класс, который умеет реагировать на некоторое множество событий, таким образом, чтобы он реагировал на события иного рода, не затрагивая исходного кода этого класса? Типичное решение проблемы – применение образца адаптера (adaptor pattern), структурного образца проектирования, который конвертирует один интерфейс в другой. Этот образец является настолько общим, что имеет смысл дать ему название, а затем использовать в моделях всякий раз, когда возникает аналогичная проблема.

    При моделировании механизмы проявляют себя двойственно. Во-первых, как было показано на рис. 1 (шаг 214), механизм просто именует набор абстракций, работающих вместе для реализации типичного поведения, представляющего некоторый интерес. Такие механизмы моделируются как простые кооперации, поскольку они являются всего лишь именами для сообщества классов. Раскрыв такую кооперацию, можно увидеть ее структурные аспекты (обычно изображаемые на диаграмме классов), а также поведенческие аспекты (обычно изображаемые на диаграммах взаимодействия). Кооперации подобного типа охватывают разные уровни абстракции системы, то есть какой-то конкретный класс, вероятно, будет участвовать в нескольких кооперациях.

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


Рис.1. Механизмы

    Такие механизмы моделируются в виде параметризованных коопераций, которые изображаются в UML подобно шаблонным классам. Если раскрыть такую кооперацию, можно увидеть ее структурные и поведенческие аспекты. Если свернуть ее, то можно увидеть, как образец применяется к системе, связывая шаблонные части кооперации с существующими абстракциями системы. При моделировании механизма в виде параметризированной кооперации вы описываете все эти элементы, с помощью которых можно адаптировать образец, меняя значение его параметров. Подобные кооперации могут появляться в разных частях системы и связываться с различными абстракциями. В приведенном примере классы образца Subject (Субъект) и Observer (Наблюдатель) связаны с конкретными классами CallQueue (ОчередьЗадач) и SlideBar (Ползунок) соответственно.

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

    На следующем шаге рассмотрим понятие каркаса в UML.




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