Шаблон проектирования — это повторно используемая форма решения проблемы проектирования. Идея была предложена архитектором Кристофером Александром [1] и адаптирована для различных других дисциплин, в частности, для разработки программного обеспечения . [2]
Организованная коллекция шаблонов проектирования, относящихся к определенной области, называется языком шаблонов . Этот язык дает общую терминологию для обсуждения ситуаций, с которыми сталкиваются дизайнеры.
Элементами этого языка являются сущности, называемые шаблонами. Каждый шаблон описывает проблему, которая снова и снова возникает в нашей среде, а затем описывает ядро решения этой проблемы таким образом, что вы можете использовать это решение миллион раз, не делая его дважды одним и тем же способом.
— Кристофер Александр, Язык шаблонов [1]
Документирование шаблона требует объяснения того, почему конкретная ситуация вызывает проблемы, и как компоненты шаблона соотносятся друг с другом, чтобы дать решение. [3] Кристофер Александер описывает общие проблемы дизайна как возникающие из-за «конфликтующих сил» — например, конфликта между желанием, чтобы комната была солнечной, и желанием, чтобы она не перегревалась в летние дни. Шаблон не скажет дизайнеру, сколько окон сделать в комнате; вместо этого он предложит набор значений, чтобы направить дизайнера к решению, которое лучше всего подходит для их конкретного применения. Александер, например, предлагает включить достаточно окон, чтобы направить свет по всей комнате. Он считает это хорошим решением, поскольку считает, что это увеличивает удовольствие от комнаты для ее жильцов. Другие авторы могут прийти к другим выводам, если они придадут большее значение расходам на отопление или материальным затратам. Эти значения, используемые автором шаблона для определения того, какое решение является «лучшим», также должны быть задокументированы в шаблоне.
Документация шаблона также должна объяснять, когда он применяется. Поскольку два дома могут сильно отличаться друг от друга, шаблон дизайна для домов должен быть достаточно широким, чтобы применяться к ним обоим, но не настолько неопределенным, чтобы не помогать проектировщику принимать решения. Диапазон ситуаций, в которых может использоваться шаблон, называется его контекстом. Вот несколько примеров: «все дома», «все двухэтажные дома» или «все места, где люди проводят время».
Например, в работе Кристофера Александра автобусные остановки и залы ожидания в хирургическом центре находятся в контексте паттерна «МЕСТО ДЛЯ ОЖИДАНИЯ».
Бизнес-модели также имеют шаблоны проектирования. [4] См. Бизнес-модель § Примеры .
Представляет решения распространенных проблем проектирования пользовательского интерфейса в виде набора шаблонов, каждый из которых содержит конкретные примеры, рекомендации и предупреждения.