Поведенческие паттерны проектирования фокусируются на алгоритмах и распределении обязанностей между объектами. Они описывают схемы взаимодействия объектов и классов, определяя, как объекты общаются и распределяют задачи.
Основные поведенческие паттерны:
- Chain of Responsibility (Цепочка обязанностей): Передача запросов последовательно по цепочке обработчиков. Каждый обработчик решает, обработать ли запрос или передать его следующему в цепочке.
- Command (Команда): Инкапсуляция запроса как объекта, позволяя параметризовать клиентов с помощью различных запросов, ставить запросы в очередь или логировать их, а также поддерживать отмену операций.
- Iterator (Итератор): Предоставление способа последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего представления.
- Mediator (Посредник): Определение объекта, инкапсулирующего способ взаимодействия набора объектов. Посредник способствует слабому зацеплению путем избавления объектов от явных ссылок друг на друга и позволяет изменять их взаимодействие независимо.
- Memento (Хранитель): Сохранение и восстановление внутреннего состояния объекта без нарушения инкапсуляции.
- Observer (Наблюдатель): Определение зависимости "один ко многим" между объектами, таким образом, при изменении состояния одного объекта все зависящие от него объекты оповещаются и автоматически обновляются.
- State (Состояние): Позволяет объекту изменять свое поведение в зависимости от своего внутреннего состояния. Каждое состояние представлено отдельным классом.
- Strategy (Стратегия): Определение семейства алгоритмов, инкапсуляция каждого из них и обеспечение их взаимозаменяемости. Стратегия позволяет менять алгоритм независимо от клиентов, которые его используют.
- Template Method (Шаблонный метод): Определение скелета алгоритма в операции, откладывая определение некоторых шагов до подклассов. Шаблонный метод позволяет подклассам переопределять определенные шаги алгоритма без изменения его общей структуры.
- Visitor (Посетитель): Представление операции, выполняемой над элементами структуры объектов, в виде отдельного класса. Посетитель позволяет добавлять новые операции, не меняя классы элементов.