Sobes.tech
Junior — Middle
89

¿Puedes explicar la concepto del patrón Decorador y cómo se utiliza para ampliar la funcionalidad de los objetos?

Respuesta de la IA

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

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