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()) # Выведет: Декоратор(Компонент)
Таким образом, можно оборачивать объекты в несколько декораторов, расширяя их поведение без изменения исходного класса.