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