Sobes.tech
Junior — Middle
97

Можете ли да обясните концепцията на патърна Декоратор и как се използва за разширяване на функционалността на обектите?

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

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