Page 75 - 4190
P. 75
Відвідувач, оскільки він розділяє дані та алгоритми, що суперечить
концепції об'єктно-орієнтованого програмування. Однак успішний
досвід застосування STL, де поділ даних і алгоритмів покладено в ос-
нову, доводить можливість використання патерну Відвідувач.
UML-діаграма класів патерну Visitor зображена на рисунку 7.7.
Рисунок 7.7 - UML-діаграма класів патерну Visitor
Патерн Interpreter
Патерн Interpreter (Інтерпретатор) – для заданої мови визначає
представлення її граматики, а також інтерпретатор речень цієї мови.
У разі, якщо якась задача виникає досить часто, є сенс подати її
конкретні проявлення у вигляді речень простою мовою. Потім можна
буде створити інтерпретатор, котрий вирішує задачу, аналізуючи ре-
чення цієї мови.
Наприклад, пошук рядків за зразком – досить розповсюджена за-
дача. Регулярні вирази – це стандартна мова для задання зразків по-
шуку.
Шаблон Інтерпретатор слід використовувати, коли є мова для ін-
терпретації, речення котрої можна подати у вигляді абстрактних син-
таксичних дерев. Найкраще шаблон працює, якщо:
граматика проста. Для складних граматик ієрархія класів стає
занадто громіздкою та некерованою. У таких випадках краще засто-
совувати генератори синтаксичних аналізаторів, оскільки вони мо-
жуть інтерпретувати вирази, не будуючи абстрактних синтаксичних
дерев, що заощаджує пам'ять, а можливо і час;
75