Page 75 - 4190
P. 75

Відвідувач,  оскільки він розділяє дані  та  алгоритми, що  суперечить
            концепції  об'єктно-орієнтованого  програмування.  Однак  успішний
            досвід застосування STL, де поділ даних і алгоритмів покладено в ос-
            нову, доводить можливість використання патерну Відвідувач.

                  UML-діаграма класів патерну Visitor зображена на рисунку 7.7.





























                            Рисунок 7.7 - UML-діаграма класів патерну Visitor

                  Патерн Interpreter
                  Патерн Interpreter (Інтерпретатор) – для заданої мови визначає
            представлення її граматики, а також інтерпретатор речень цієї мови.

                  У разі, якщо якась задача виникає досить часто, є сенс подати її
            конкретні проявлення у вигляді речень простою мовою. Потім можна
            буде створити інтерпретатор, котрий вирішує задачу, аналізуючи ре-

            чення цієї мови.
                  Наприклад, пошук рядків за зразком – досить розповсюджена за-
            дача. Регулярні вирази – це стандартна мова для задання зразків по-

            шуку.
                  Шаблон Інтерпретатор слід використовувати, коли є мова для ін-
            терпретації, речення котрої можна подати у вигляді абстрактних син-

            таксичних дерев. Найкраще шаблон працює, якщо:
                    граматика проста. Для складних граматик ієрархія класів стає
            занадто громіздкою та некерованою. У таких випадках краще засто-
            совувати  генератори  синтаксичних  аналізаторів,  оскільки  вони  мо-

            жуть  інтерпретувати  вирази,  не  будуючи  абстрактних  синтаксичних
            дерев, що заощаджує пам'ять, а можливо і час;

                                                              75
   70   71   72   73   74   75   76   77   78   79   80