Sobes.tech
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.