Como eu implemento o Decorator Pattern em Ruby

Eu gostaria de saber como vocês implementam o padrão de decorador. É assim que eu faço.

Dada esta classe:

class Sender
def talk
puts
"Hello world!"
end
end

Como adicionamos um mecanismo de registro de forma que não alteremos o código da classe acima?

É assim que eu faço:

  • Crie uma nova classe.
class LogSender
def initialize(sender)
@sender = sender
end

def send
#log something here
@sender.talk
end
end