Back to questions
Junior — Middle
59
Можете объяснить концепцию паттерна Декоратор и как он используется для расширения функциональности объектов?
Answer from AI
sobes.tech AI
Паттерн Декоратор позволяет динамически расширять функциональность объекта без изменения его исходного кода. Это достигается путем оборачивания объекта в другой объект-декоратор, который реализует тот же интерфейс и добавляет новую функциональность.
В Python это часто реализуется через классы, которые принимают объект и переопределяют методы, вызывая оригинальные методы и добавляя дополнительное поведение.
Пример:
class Component:
def operation(self):
return "Компонент"
class Decorator:
def __init__(self, component):
self._component = component
def operation(self):
return f"Декоратор({self._component.operation()})"
# Использование
component = Component()
decorated = Decorator(component)
print(decorated.operation()) # Выведет: Декоратор(Компонент)
Так можно добавлять функциональность (например, логирование, кэширование, проверку) без изменения исходного класса.