Sobes.tech
Junior — Middle
90

Decorator deseniğinin kavramını ve nesnelerin işlevselliğini genişletmek için nasıl kullanıldığını açıklayabilir misiniz?

AI'dan gelen yanıt

sobes.tech yapay zeka

Паттерн Декоратор позволяет динамически расширять функциональность объекта без изменения его исходного кода. Это достигается путем оборачивания объекта в другой объект-декоратор, который реализует тот же интерфейс и добавляет новую функциональность.

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

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