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