Junior — Middle
81
Pouvez-vous expliquer le concept du motif Décorateur et comment il est utilisé pour étendre la fonctionnalité des objets?
Réponse de l'IA
sobes.tech IA
Паттерн Декоратор позволяет динамически расширять функциональность объекта без изменения его исходного кода. Это достигается путем оборачивания объекта в другой объект-декоратор, который реализует тот же интерфейс и добавляет новую функциональность.
В 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()) # Выведет: Декоратор(Компонент)
Так можно добавлять функциональность (например, логирование, кэширование, проверку) без изменения исходного класса.