# Шаблон проектирования

Шаблон проектирования представляет собой образец или пример правильного решения какой-либо распространенной задачи при разработке ПО.

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

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

Существуют основные типы шаблонов проектирования:

- Шаблон делегирования (Delegation pattern) передает ответственность за выполнение своего поведения связанному объекту.
- Шаблон функционального дизайна (Functional design) обеспечивает для каждого модуля конкретную функцию, которая исполняется с минимальным побочным эффектом для других модулей.
- Неизменяемый интерфейс (Immutable interface) создает неизменяемый объект.
- Интерфейс (Interface) обеспечивает структурирование программ для более простого их понимания.
- Интерфейс-маркер (Marker interface) применяется для отметки наличие или отсутствие реализации атрибута или аннотации.
- Контейнер свойств (Property container) добавляет дополнительные свойства во внутренний контейнер класса вместо того просто расширить класс новыми свойствами.
- Канал событий (Event channel) создает канал, по которому идут сообщения в шаблоне издатель - подписчик. Для этой цели в данном шаблоне есть объект-представитель, который не является ни издателем, ни подписчиком, а только обеспечивает их связь.

## Смотрите также

- шаблон антипаттерн,
  который определяет неправильное решение задачи
- набор концепций Парадигма программирования,
  который определяет подход к программированию
- техника `planning-poker`,
  которая предназначена для оценки объема и сложности задач
- диаграмма сгорания задач,
  которая применяется для графическое представление объема работы

← →
↑