Sobes.tech
Junior — Middle
96

Können Sie erklären, was das Muster 'Decorator' in der Programmierung bedeutet und wie es verwendet wird?

Unternehmen wurden gefragt
WildberriesWildberries
МТСМТС
Soft Media Group

Antwort von AI

sobes.tech KI

Паттерн "декоратор" в программировании позволяет динамически добавлять объектам новые обязанности, оборачивая их в другие объекты-декораторы, не изменяя исходный класс.

В Python декораторы часто реализуются как функции или классы, которые принимают объект (или функцию) и возвращают обёртку с дополнительным поведением.

Пример использования декоратора для функции:

def decorator(func):
    def wrapper(*args, **kwargs):
        print("До вызова функции")
        result = func(*args, **kwargs)
        print("После вызова функции")
        return result
    return wrapper

@decorator
def say_hello():
    print("Привет!")

say_hello()

Здесь say_hello оборачивается в wrapper, который добавляет вывод сообщений до и после вызова.

В объектно-ориентированном подходе декоратор — это класс, который содержит ссылку на объект того же интерфейса и расширяет его поведение, например:

class Component:
    def operation(self):
        pass

class ConcreteComponent(Component):
    def operation(self):
        print("Основная операция")

class Decorator(Component):
    def __init__(self, component):
        self._component = component
    def operation(self):
        print("Дополнительное поведение до")
        self._component.operation()
        print("Дополнительное поведение после")

component = ConcreteComponent()
decorated = Decorator(component)
decorated.operation()

Таким образом, декоратор позволяет расширять функциональность без изменения исходного кода.