Page 74 - 4190
P. 74
Патерн Template Method має такі особливості:
1. Template Method використовує спадкоємство для модифікації
частини алгоритму. Шаблон «Стратегія» використовує делегування
для модифікації усього алгоритму.
2. Шаблон «Стратегія» змінює логіку окремих об'єктів. Template
Method змінює логіку усього класу.
3. «Фабричні методи» часто викликаються з Template Method.
Патерн Visitor
Патерн Відвідувач (Visitor) – шаблон проектування, який дозволяє
відділити певний алгоритм від елементів, на яких алгоритм має бути
виконаний, таким чином можливо легко додати або ж змінити алго-
ритм без змін щодо елементів системи. Практичним результатом є
можливість додавання нових операцій в існуючі структури об'єкта без
зміни цих структур.
Відвідувач дозволяє додавати нові віртуальні функції в родинні
класи без зміни самих класів, натомість, один відвідувач створює
клас, який реалізує всі відповідні спеціалізації віртуальної функції.
Відвідувач бере приклад посилання як вхідних даних і реалізується
шляхом подвійної диспетчеризації.
1. Шаблон Відвідувач визначає операцію, виконувану над кож-
ним елементом деякої структури. Дозволяє, не змінюючи класи цих
об'єктів, додавати в них нові операції.
2. Є класичною технікою для відновлення втраченої інформації
про тип.
3. Шаблон Відвідувач дозволяє виконати потрібні дії в залежності
від типів двох об'єктів.
Основним призначенням патерну «Відвідувач» є введення абст-
рактної функціональності для сукупної ієрархічної структури об'єктів
«елемент», а саме – патерн відвідувач дозволяє, не змінюючи класи
елементів, додавати в них нові операції. Для цього вся обробна функ-
ціональність переноситься з самих класів елементів в ієрархію спад-
кування Відвідувача.
Шаблон Відвідувач дозволяє легко додавати нові операції — по-
трібно просто додати новий похідний від відвідувача клас. Однак па-
терн Відвідувач слід використовувати тільки в тому випадку, якщо
підкласи елементів сукупної ієрархічної структури залишаються ста-
більними (незмінними). В іншому випадку, потрібно докласти знач-
них зусиль на оновлення всієї ієрархії.
Іноді наводяться заперечення з приводу використання патерну
74