Декоратор — это шаблон проектирования, позволяющий динамически добавлять новое поведение существующим объектам, оборачивая их в специальные "объекты-обертки" без изменения их структуры.
Ключевые принципы:
- Динамическое добавление поведения: Функциональность добавляется во время выполнения, а не статически.
- Прозрачность для клиента: Клиентский код взаимодействует с декоратором, как будто это оригинальный объект.
- Гибкость: Позволяет комбинировать различные декораторы для достижения нужного поведения.
Пример в Python:
python
В данном примере @my_decorator синтаксическим сахаром эквивалентно say_hello = my_decorator(say_hello).
Пример в JavaScript:
javascript
Здесь @logCall используется для добавления логирования к методу add класса Example.
Применение в QA Automation:
- Логирование: Добавление логирования к шагам тестов или взаимодействиям с элементами.
- Обработка исключений: Обертывание вызовов функций для обработки специфических исключений.
- Управление состоянием: Изменение состояния объекта перед или после вызова его методов (например, переключение контекстов).
- Аутентификация/авторизация: Проверка прав доступа перед выполнением определенного действия.