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 (Шаблонний метод) – задає базову складову алгоритму, деякі гілки якого можуть бути змінені у підкласах без спотворення загальної структури цього алгоритму.

 


Споріднені теми