Junior — Middle
95
Kun je uitleggen wat het patroon 'decorator' betekent in programmeren en hoe het wordt gebruikt?
Bedrijven waar gevraagd werd
Soft Media Group
Antwoord van AI
sobes.tech AI
Паттерн "декоратор" в программировании позволяет динамически добавлять объектам новые обязанности, оборачивая их в другие объекты-декораторы, не изменяя исходный класс.
В Python декораторы часто реализуются как функции или классы, которые принимают объект (или функцию) и возвращают обёртку с дополнительным поведением.
Пример использования декоратора для функции:
def decorator(func):
def wrapper(*args, **kwargs):
print("До вызова функции")
result = func(*args, **kwargs)
print("После вызова функции")
return result
return wrapper
@decorator
def say_hello():
print("Привет!")
say_hello()
Здесь say_hello оборачивается в wrapper, который добавляет вывод сообщений до и после вызова.
В объектно-ориентированном подходе декоратор — это класс, который содержит ссылку на объект того же интерфейса и расширяет его поведение, например:
class Component:
def operation(self):
pass
class ConcreteComponent(Component):
def operation(self):
print("Основная операция")
class Decorator(Component):
def __init__(self, component):
self._component = component
def operation(self):
print("Дополнительное поведение до")
self._component.operation()
print("Дополнительное поведение после")
component = ConcreteComponent()
decorated = Decorator(component)
decorated.operation()
Таким образом, декоратор позволяет расширять функциональность без изменения исходного кода.