Back to questions
OZON
Middle
7
Что такое декоратор? Расскажи про паттерн Decorator
Companies where asked
Answer from AI
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.