Skip to main content

Поведенческие шаблоны

Поведенческие шаблоны описывают типовые способы взаимодействия объектов и распределения ответственности между ними.

Их цель - сделать коммуникацию между компонентами более гибкой: снизить связанность, упростить расширение поведения и избежать жестких зависимостей в логике взаимодействия.

Какие шаблоны входят в группу

  • Цепочка обязанностей: передает запрос по цепочке обработчиков.
  • Команда: инкапсулирует запрос в объект.
  • Интерпретатор: описывает элементы языка и правила их обработки.
  • Итератор: предоставляет последовательный доступ к элементам коллекции.
  • Посредник: централизует взаимодействие между объектами.
  • Снимок: сохраняет и восстанавливает внутреннее состояние объекта.
  • Null Object: предоставляет объект с нейтральным поведением вместо null.
  • Наблюдатель: уведомляет подписчиков об изменениях состояния.
  • Состояние: меняет поведение объекта при изменении его состояния.
  • Стратегия: инкапсулирует взаимозаменяемые алгоритмы.
  • Шаблонный метод: задает каркас алгоритма с вариативными шагами.
  • Посетитель: добавляет новые операции над структурой объектов без изменения их классов.

Когда использовать поведенческие шаблоны

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

Практические ориентиры

  1. Chain of Responsibility, Command, Mediator и Observer решают задачу развязки отправителя и получателя, но с разными компромиссами.
  2. Command и Memento часто используются как отложенные "токены": команда хранит действие, снимок - состояние.
  3. Mediator и Observer могут конкурировать: первый централизует коммуникацию, второй распределяет ее через подписки.
  4. State и Strategy похожи по структуре, но отличаются намерением применения.
  5. Template Method и Strategy вариативно настраивают алгоритм разными способами: через наследование и делегирование.
  6. Visitor хорошо работает с объектными структурами, где часто добавляются новые операции.

Источник

Материал страницы основан на обзоре SourceMaking: