Page 67 - 4190
P. 67
ЛЕКЦІЯ 7
КЛАСИФІКАЦІЯ ПАТЕРНІВ ПОВЕДІНКИ ДЛЯ
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
Патерни поведінки розглядають питання про зв'язки між об'єкта-
ми і розподілом обов'язків між ними. Для цього можуть використову-
ватися механізми, засновані як на спадкоємстві, так і на композиції.
Коротко розглянемо особливості патернів (шаблонів) поведінки.
Патерн Iterator
Патерн Iterator (Ітератор) – надає спосіб послідовного доступу
до всіх елементів складеного об'єкта, не розкриваючи його внутріш-
нього улаштування.
Складений об'єкт, такий як список, повинен надавати спосіб до-
ступу до його елементів без розкриття своєї внутрішньої структури.
Більше того, іноді треба перебирати елементи списку різними спосо-
бами, залежно від конкретного завдання. Іноді необхідно мати декі-
лька активних обходів одного списку одночасно. Було б добре також
мати єдиний інтерфейс для обходу різних типів складених об'єктів
(тобто поліморфна ітерація).
Патерн Iterator дозволяє все це робити. Ключова ідея полягає в
тому, щоб відповідальність за доступ і обхід перемістити із складено-
го об'єкту на об'єкт Iterator, який визначатиме стандартний протокол
обходу.
Абстракція Iterator має особливе значення для технології, що на-
зивається "узагальнене програмування". Ця технологія чітко розділяє
такі поняття як "алгоритм" і "структура даних". Мотивуючі чинники:
сприяння компонентному розробленню, підвищення продуктивності і
зниження витрат на управління.
Розглянемо приклад. Якщо ви хочете одночасно підтримувати
чотири види структур даних (масив, бінарне дерево, зв’язаний список
та хэш-таблиця) і три алгоритми (сортування, пошук та злиття), то
традиційний підхід потребуватиме 12 варіантів конфігурацій (чотири
рази по три), тоді як узагальнене програмування вимагає лише 7 (чо-
тири плюс три).
Для маніпулювання колекцією клієнт використовує відкритий ін-
терфейс класу Collection. Проте доступ до елементів колекції інкап-
67