Junior — Middle
Hoe wordt het principe van de werking van het ontwerp patroon 'Decorator' geïmplementeerd in programmeren?
sobes.tech AI
Antwoord van 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()) # Выведет: Декоратор(Компонент)
Таким образом, можно оборачивать объекты в несколько декораторов, расширяя их поведение без изменения исходного класса.