Title / Description
Code require './pedido.rb' require './modulosujeito.rb' # 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("#Email: Prezado cliente seu pedido esta: #{p.status}") # GerenteEstoque # verificar status # Tratar estoque puts("#Estoque: 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