Описание паттернов проектирования

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

  • Название и классификация паттерна. Название паттерна должно четко отражать его назначение.
  • Назначение. Лаконичный ответ на следующие вопросы: каковы функции паттерна, его обоснование и назначение, какую конкретную задачу проектирования можно решить с его помощью.
  • Известен также под именем. Другие распространенные названия паттерна, если таковые имеются.
  • Мотивация. Сценарий, иллюстрирующий задачу проектирования и то, как она решается данной структурой класса или объекта. Благодаря мотивации можно лучше понять последующее, более абстрактное описание паттерна.
  • Применимость. Описание ситуаций, в которых можно применять данный паттерн. Примеры проектирования, которые можно улучшить с его помощью. Распознавание таких ситуаций.
  • Структура. Графическое представление классов в паттерне с использованием нотации, основанной на методике Object Modeling Technique (OMT). Мы пользуемся также диаграммами взаимодействий для иллюстрации последовательностей запросов и отношений между объектами. 
  • Участники. Классы или объекты, задействованные в данном паттерне проектирования, и их функции.
  • Отношения. Взаимодействие участников для выполнения своих функций.
  • Результаты. Насколько паттерн удовлетворяет поставленным требованиям? Результаты применения, компромиссы, на которые приходится идти. Какие аспекты поведения системы можно независимо изменять, используя данный паттерн?
  • Реализация. Сложности и так называемые подводные камни при реализации паттерна. Советы и рекомендуемые приемы. Есть ли у данного паттерна зависимость от языка программирования?
  • Пример кода. Фрагмент кода, иллюстрирующий вероятную реализацию на языках C++ или Smalltalk.
  • Известные применения. Возможности применения паттерна в реальных системах. Даются, по меньшей мере, два примера из различных областей.
  • Родственные паттерны. Связь других паттернов проектирования с данным. Важные различия. Использование данного паттерна в сочетании с другими.