Title / Description
Code # instanciamos a classe pedido pedido = Pedido.new # instance_eval permite alterar a estrura # classe apenas para essa instancia em especifico pedido.instance_eval do class << self # transformamos essa instancia em uma classe # capaz de adicionar blocks observadores include ModuloSujeito # o metodo mudar_status é redefinido para # que ele possa notificar seus observadores alias_method :old_mudar_status,:mudar_status def mudar_status(novo_status) old_mudar_status(novo_status) # notificando os observadores notificarObservadores end end end pedido.addObservador do |p| # EmailSender # conectar() # enviar email # desconectar() puts("#Observador Email: Prezado cliente seu pedido esta: #{p.status}") # GerenteEstoque # verificar status # Tratar estoque puts("#ObservadorEstoque: Estoque remanejado") end pedido.mudar_status :Aberto pedido.mudar_status :Confirmado pedido.mudar_status :Reservado pedido.mudar_status :Despachado
Author
Highlight as C C++ CSS Clojure Delphi ERb Groovy (beta) HAML HTML JSON Java JavaScript PHP Plain text Python Ruby SQL XML YAML diff code