Что такое Паттерн?

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

Состав паттерна

Чаще всего, описание паттерна состоит из:

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

Кто придумывает паттерны?

По определению, паттерны не придумывают, а скорее «открывают». Это не какие-то супер-оригинальные решения, а наоборот — часто встречающиеся, типовые решения одной и той же проблемы.

Концепцию паттернов впервые описал Кристофер Александер в книге «Язык шаблонов. Города. Здания. Строительство». В книге описан «язык» для проектирования окружающей среды, единицы которого — шаблоны, — отвечают на архитектурные вопросы: какой высоты сделать окна, сколько этажей должно быть в здании, какую площадь в микрорайоне отвести под деревья и газоны.

Идея показалась заманчивой четвёрке авторов Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес, которую принято называть «бандой четырёх» (Gang of Four). В 1995 году они написали книгу «Design Patterns: Elements of Reusable Object-Oriented Software», в которой применили концепцию типовых паттернов в программировании. В книгу вошли 23 паттерна, решающие различные проблемы объектно-ориентированного дизайна.

С тех пор были найдены десятки других объектных паттернов. «Паттерновый подход» стал популярен и в других областях программирования, поэтому сейчас можно встретить всевозможные паттерны и за пределами объектного проектирования.