Patterns. Паттерны поведения. Обзор

Паттерны поведения. Обзор


Содержание


Поиск на других ресурсах:

1. Особенности построения паттернов поведения. Паттерны уровня класса и объекта

Основная особенность паттернов поведения – распределение обязанностей между объектами, взаимодействующими между собой разными способами. Для паттернов поведения характерна реализация сложного потока управления, на котором сосредотачивается основное внимание. При выполнении программы возникает трудность в прослеживании выполнения этого потока. Связи между объектами отходят на второй план.

Среди паттернов поведения различают две группы паттернов:

  • паттерны уровня класса. В этих паттернах распределение поведения между разными классами обеспечивается с помощью механизма наследования;
  • паттерны уровня объекта. Эти паттерны базируются на принципе композиции. Для достижения решения задачи сочетается взаимодействие между собой набора объектов, имеющих одинаковые права.

Для паттернов уровня класса можно выделить следующие характерные особенности:

  • пошаговое определение алгоритма с помощью примитивных или абстрактных операций, достраивающих алгоритм в подклассах на нижних уровнях иерархии (паттерн Template Method);
  • представление с помощью иерархии классов соответствующей грамматики языка. На основе этой грамматики осуществляется интерпретация набора операций, выполняемых над объектами (экземплярами) этих классов (паттерн Interpreter).

В паттернах уровня объекта акцентируется внимание на:

  • способе получения информации равноправными объектами;
  • совместном сочетании усилий между объектами для достижения решения задачи;
  • обеспечение служебной информации о существовании объектов, обрабатывающих запрос;
  • снижению степени связанности системы объектов (паттерны Mediator, Chain of Responsibility);
  • контроль за зависимостями между объектами (паттерн Observer);
  • особенностями поведения внутри объекта и передачи ему запросов;
  • особенности реализации алгоритма внутри объекта с целью его упрощения и замены (паттерн Strategy);
  • представлении запроса в виде объекта с целью его передачи в качестве параметра, сохранении и т.п. (паттерн Command);
  • формирование состояния объекта таким образом, чтобы при изменении этого состояния происходило изменение в поведении объекта (паттерн State);
  • обеспечение необходимого поведения объекта во избежание распределения этого поведения между разными классами (паттерн Visitor);
  • обеспечение нужного способа доступа к объектам и способа обхода этих объектов из некоторого агрегата (паттерн Iterator).

 

2. Перечень паттернов поведения

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

  • Chain of Responsibility (Цепочка обязанностей) – используется для создания цепочки объектов-получателей (обработчиков), получающих и обрабатывающих некоторый запрос от клиента;
  • Command (Команда, Action, Transaction) – используется для отправки запросов неизвестным объектам приложения путем преобразования самого запроса в объект. Этот объект можно хранить как любой другой;
  • Iterator (Итератор, Cursor) – представляет способ доступа к сложному объекту. При этом внутренний состав объекта не высветливается;
  • Mediator (Посредник) – реализует объект, в котором описывается способ взаимодействия между разными объектами. Между объектами отсутствуют ссылки друг на друга. Все взаимодействие происходит через объект-посредник;
  • Memento (Хранитель, Token) – позволяет зафиксировать (получить) текущее внутреннее состояние объекта в случаях, когда нужно восстановить предыдущее состояние объекта при возникновении сбоев или ошибок;
  • Observer (Наблюдатель, Dependents, Publish-Subscribe) – обеспечивает механизм оповещения взаимосвязанных между собой объектов в случае, когда изменяется состояние одного из этих объектов (все остальные объекты получают соответствующую информацию);
  • State (Состояние) – обеспечивает изменение поведения объекта в зависимости от состояния. При этом состояние объекта определяется отдельным классом, формирующим самостоятельность этого объекта;
  • Strategy (Стратегия, Policy) – формирует выбор нужного алгоритма из множества в зависимости от потребностей клиента. Реализует взаимозаменяемость инкапсулированных алгоритмов;
  • Visitor (Посетитель) – реализует описание операции, выполняемой с каждым объектом, входящим в некоторую структуру. Классы объектов не изменяются при создании новой операции.

К паттернам поведения классов относятся:

  • Interpreter (Интерпретатор) – для некоторого заданного языка формирует предложения, определяющие грамматику этого языка на основе использования абстрактных синтаксических деревьев;
  • Template Method (Шаблонный метод) – задает базовую составляющую алгоритма, некоторые ветви которого могут быть изменены в подклассах без искажения общей структуры этого алгоритма.

 


Связанные темы