Sobes.tech
Junior — Middle

Чӣ гуна татбиқ мешавад ва дар чӣ асоси принсипи кории намунаи тарҳрезии 'Декоратор' дар барномасозӣ?

sobes.tech AI

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

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