sad

Ruby code posted
created at 24 Aug 19:13

Edit | Back
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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
1 KB in 2 ms with coderay