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

Таким образом, можно оборачивать объекты в несколько декораторов, расширяя их поведение без изменения исходного класса.