Sobes.tech
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())  # Выведет: Декоратор(Компонент)

Так можно добавлять функциональность (например, логирование, кэширование, проверку) без изменения исходного класса.