Back to questions
Junior — Middle
63
Можно ли сделать класс, который расширяет функциональность другого класса с помощью паттерна декоратор?
Answer from AI
sobes.tech AI
Да, паттерн декоратор позволяет расширить функциональность существующего класса без изменения его кода, оборачивая объект этого класса в другой объект-декоратор. В Python это часто реализуется через класс, который принимает объект базового класса и переопределяет нужные методы, добавляя новое поведение.
Пример:
class Component:
def operation(self):
return "Component"
class Decorator:
def __init__(self, component):
self._component = component
def operation(self):
return f"Decorator({self._component.operation()})"
# Использование
component = Component()
decorated = Decorator(component)
print(decorated.operation()) # Выведет: Decorator(Component)
Таким образом, класс-декоратор расширяет функциональность базового класса, не наследуясь от него напрямую, а используя композицию.