Middle
O que é um decorador? Fala sobre o padrão Decorator
sobes.tech IA
Resposta da IA
Um decorador é um padrão de design estrutural que permite adicionar funcionalidades a objetos de forma dinâmica, envolvendo-os em outros objetos decoradores, sem alterar o código fonte.
O padrão Decorator é útil quando se deseja expandir o comportamento de um objeto sem criar múltiplas subclasses.
Exemplo em Go:
package main
import "fmt"
type Notifier interface {
Notify(message string)
}
type EmailNotifier struct {}
func (e *EmailNotifier) Notify(message string) {
fmt.Println("Notificação por email:", message)
}
type SMSDecorator struct {
wrapped Notifier
}
func (s *SMSDecorator) Notify(message string) {
s.wrapped.Notify(message) // notificação básica
fmt.Println("Notificação por SMS:", message) // comportamento adicional
}
func main() {
var notifier Notifier = &EmailNotifier{}
notifier = &SMSDecorator{wrapped: notifier}
notifier.Notify("Olá!")
}
Aqui, SMSDecorator adiciona o envio de SMS à notificação por email, sem alterar o código de EmailNotifier.