Middle
97
questionbank
Что такое декоратор в контексте программирования?
AI答案
sobes.tech AI
Декоратор — это шаблон проектирования, позволяющий динамически добавлять новое поведение существующим объектам, оборачивая их в специальные "объекты-обертки" без изменения их структуры.
Ключевые принципы:
- Динамическое добавление поведения: Функциональность добавляется во время выполнения, а не статически.
- Прозрачность для клиента: Клиентский код взаимодействует с декоратором, как будто это оригинальный объект.
- Гибкость: Позволяет комбинировать различные декораторы для достижения нужного поведения.
Пример в Python:
def my_decorator(func):
def wrapper():
print("Перед вызовом функции")
func()
print("После вызова функции")
return wrapper
@my_decorator
def say_hello():
print("Привет!")
# Вызов функции с примененным декоратором
say_hello()
В данном примере @my_decorator синтаксическим сахаром эквивалентно say_hello = my_decorator(say_hello).
Пример в JavaScript:
function logCall(target, key, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = function(...args) {
console.log(`Вызов метода ${key} с аргументами: ${args}`);
const result = originalMethod.apply(this, args);
console.log(`Метод ${key} вернул: ${result}`);
return result;
};
return descriptor;
}
class Example {
@logCall
add(a, b) {
return a + b;
}
}
const instance = new Example();
instance.add(2, 3);
Здесь @logCall используется для добавления логирования к методу add класса Example.
Применение в QA Automation:
- Логирование: Добавление логирования к шагам тестов или взаимодействиям с элементами.
- Обработка исключений: Обертывание вызовов функций для обработки специфических исключений.
- Управление состоянием: Изменение состояния объекта перед или после вызова его методов (например, переключение контекстов).
- Аутентификация/авторизация: Проверка прав доступа перед выполнением определенного действия.