Похожие презентации:
Архітектура та проектування програмного забезпечення
1.
КПІЗАрхітектура та проектування програмного забезпечення
Виконав
Студент групи
ІПЗ-32
Дячук Степан
2.
Тема:visitor pattern3.
Питання які будуть розлянуті на презентації1. Що таке visitor патерн.
2. Проблема відвідувача та кроки її вирішення
3.Структура.
4.Переваги та недоліки.
5. Де застосовується.
4.
Відвідувач/VisitorВідвідувач — це поведінковий патерн проектування, що дає змогу додавати
до програми нові операції, не змінюючи класи об’єктів, над якими ці операції
можуть виконуватися.
5.
Проблема моделі6.
Проблема моделіУявіть ваша команда розробляє програму, що працює з геоданними у вигляді
графа. Ваше завдання – зробити експорт графа XML. Справа була б легкою,
якщо б ви могли редагувати класи вузлів. Але, змінити класи вузлів у вас не
вишло. Системний архітектор сказав, що код класів вузлів зараз дуже
стабільний, і від нього багато що залежить, а тому він не хоче ризикувати,
дозволяючи будь-кому чіпати цей код. До того ж він сумнівався в тому, що
експорт до XML взагалі є доречним в рамках цих класів.
7.
Вирішення проблеми8.
Патерн Відвідувач пропонує розмістити нову поведінку вокремому класі, замість того, щоб множити її відразу в декількох
класах. Об’єкти, з якими повинна бути пов’язана поведінка, не
виконуватимуть її самостійно. Замість цього ви будете
передавати ці об’єкти до методів відвідувача. Код поведінки,
імовірно, повинен відрізнятися для об’єктів різних класів, тому й
методів у відвідувача повинно бути декілька.
9.
Структура10.
11.
12.
Переваги та недоліки13.
Спрощує додавання операцій,працюючих зі складними
структурами об’єктів..
Патерн невиправданий, якщо
ієрархія елементів часто
змінюється.
Об’єднує споріднені операції в
одному класі.
Відвідувач може накопичувати
стан при обході структури
елементів.
Може призвести до
порушення інкапсуляції
елементів.
14.
Застосування15.
Якщо над об’єктами складної структури об’єктівпотрібно виконувати деякі не пов’язані між собою
операції, але ви не хочете «засмічувати» класи такими
операціями.
Якщо вам потрібно виконати якусь операцію над усіма
елементами складної структури об’єктів, наприклад,
деревом.
Якщо нова поведінка має сенс тільки для деяких класів з існуючої ієрархії.