Что такое паттерн проектирования?.
Паттерны проектирования — это типовые решения часто встречающихся проблем в проектировании ПО. Они похожи на готовые чертежи, которые можно настроить под себя, чтобы решить повторяющуюся проблему проектирования в вашем коде.
Нельзя просто найти паттерн и скопировать его в свою программу, как это делается с готовыми функциями или библиотеками. Паттерн — это не конкретный кусок кода, а общая концепция решения определённой проблемы. Вы можете следовать деталям паттерна и реализовать решение, которое подходит под реалии вашей собственной программы.
Паттерны часто путают с алгоритмами, потому что оба понятия описывают типовые решения некоторых известных проблем. Но если алгоритм всегда задаёт чёткий набор действий, ведущих к некоторой цели, то паттерн — это более высокоуровневое описание решения. Код одного и того же паттерна, применённого к двум разным программам, может различаться.
Аналогия алгоритма — это кулинарный рецепт: у обоих есть чёткие шаги для достижения цели. Паттерн же больше похож на чертёж: вы видите, каким будет результат и его особенности, но точный порядок реализации остаётся за вами.
Из чего состоит паттерн?
Большинство паттернов описываются очень формально, чтобы их можно было воспроизводить во множестве контекстов. Вот разделы, которые обычно присутствуют в описании паттерна:
- Назначение паттерна кратко описывает и проблему, и решение.
- Мотивация подробнее объясняет проблему и решение, которое делает возможным паттерн.
- Структура классов показывает каждую часть паттерна и то, как они связаны между собой.
- Пример кода на одном из популярных языков программирования облегчает понимание идеи, стоящей за паттерном.
Некоторые каталоги паттернов перечисляют и другие полезные сведения, такие как применимость паттерна, шаги реализации и связи с другими паттернами.