Junior — Middle
92
Ar galite paaiškinti Dekoratoriaus šablono koncepciją ir kaip jis naudojamas objektų funkcionalumui išplėsti?
Atsakymas iš 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()) # Выведет: Декоратор(Компонент)
Так можно добавлять функциональность (например, логирование, кэширование, проверку) без изменения исходного класса.