Sobes.tech
Назад к вопросам
Middle
6

Что такое декоратор? Расскажи про паттерн Decorator

Компании, где спрашивали
OZONOZON

Ответ от нейросети

sobes.tech AI

Декоратор — это структурный паттерн проектирования, который позволяет динамически добавлять объектам новую функциональность, оборачивая их в другие объекты-декораторы, не изменяя исходный код.

Паттерн Decorator полезен, когда нужно расширить поведение объекта без создания множества подклассов.

Пример на Go:

package main
import "fmt"

type Notifier interface {
    Notify(message string)
}

type EmailNotifier struct {}
func (e *EmailNotifier) Notify(message string) {
    fmt.Println("Email notification:", message)
}

type SMSDecorator struct {
    wrapped Notifier
}
func (s *SMSDecorator) Notify(message string) {
    s.wrapped.Notify(message) // базовое уведомление
    fmt.Println("SMS notification:", message) // дополнительное поведение
}

func main() {
    var notifier Notifier = &EmailNotifier{}
    notifier = &SMSDecorator{wrapped: notifier}
    notifier.Notify("Hello!")
}

Здесь SMSDecorator добавляет к уведомлению по email ещё и отправку SMS, не меняя код EmailNotifier.