Поведінкові патерни проектування
Список поведінкових патернів проектування, які вирішують завдання ефективної та безпечної взаємодії між об'єктами програми.
            Ланцюжок обов'язків
            Chain of Responsibility
        
        
Дає змогу передавати запити послідовно ланцюжком обробників. Кожен наступний обробник вирішує, чи може він обробити запит сам і чи варто передавати запит далі ланцюжком.
            Команда
            Command
        
        
Перетворює запити на об'єкти, дозволяючи передавати їх як аргументи під час виклику методів, ставити запити в чергу, логувати їх, а також підтримувати скасування операцій.
            Ітератор
            Iterator
        
        
Дає змогу послідовно обходити елементи складових об'єктів, не розкриваючи їхньої внутрішньої організації.
            Посередник
            Mediator
        
        
Дає змогу зменшити зв'язаність великої кількості класів між собою, завдяки переміщенню цих зв'язків до одного класу-посередника.
            Знімок
            Memento
        
        
Дає змогу зберігати та відновлювати минулий стан об'єктів, не розкриваючи подробиць їхньої реалізації.
            Спостерігач
            Observer
        
        
Створює механізм підписки, що дає змогу одним об’єктам стежити й реагувати на події, які відбуваються в інших об’єктах.
            Стан
            State
        
        
Дає змогу об'єктам змінювати поведінку в залежності від їхнього стану. Ззовні створюється враження, ніби змінився клас об'єкта.
            Стратегія
            Strategy
        
        
Визначає сімейство схожих алгоритмів і розміщує кожен з них у власному класі. Після цього алгоритми можна заміняти один на інший прямо під час виконання програми.
            Шаблонний метод
            Template Method
        
        
Визначає кістяк алгоритму, перекладаючи відповідальність за деякі його кроки на підкласи. Патерн дозволяє підкласам перевизначати кроки алгоритму, не змінюючи його загальної структури.
            Відвідувач
            Visitor
        
        
Дає змогу додавати до програми нові операції, не змінюючи класи об'єктів, над якими ці операції можуть виконуватися.