Page 76 - 4190
P. 76
ефективність не є головним критерієм. Найефективніші інтер-
претатори зазвичай не працюють безпосередньо із деревами, а споча-
тку транслюють їх в іншу форму. Так, регулярний вираз часто пере-
творюють на скінченний автомат. Але навіть у цьому разі сам транс-
лятор можна реалізувати за допомогою шаблону Інтерпретатор.
UML-діаграма класів патерну Interpreter зображена на рисунку 7.8.
Рисунок 7.8 – UML-діаграма класів патерну Interpreter
Патерн Command
Патерн Command (Команда) – інкапсулює запит у формі об'єкта,
дозволяючи тим самим задавати параметри клієнтів для обробки від-
повідних запитів, ставити запити у чергу або протоколювати їх, а та-
кож підтримувати скасовування операцій.
Слід використовувати шаблон Команда, якщо:
необхідно параметризувати об'єкти дією. У процедурній мові
таку параметризацію можна виразити за допомогою функції зворот-
ного виклику, тобто такою функцією, яка реєструється, щоб бути ви-
кликаною пізніше. Команди є об'єктно-орієнтованою альтернативою
функціям зворотного виклику;
визначати, ставити у чергу та виконувати запити у різний час.
Термін життя об'єкта Команда не обов'язково залежить від терміну
життя початкового запиту. Якщо отримувача вдається реалізувати та-
ким чином, щоб він не залежав від адресного простору, то об'єкт-
команду можна передати іншому процесу, який займеться його вико-
нанням;
76