sad

Ruby code posted
created at 24 Aug 19:44, updated at 10 Sep 00:51

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
module PadraoSingleton
  def getInstancia
    (self.class_variable_get :@@instance)
  end    

  def self.included(mod)
    # criando a unica instancia da classe
    mod.class_variable_set :@@instance , mod.new
    #extendendo o proprio modulo para tornar o metodo getInstancia estático
    mod.extend(self)
    # colocando o constructor como privado 
    mod.private_class_method :new    
  end
end

class Conexao
  # incluindo o modulo PadraoSingleton  
  # nesse momento a classe tem seu construtor modificado para privado
  # e adiquire o metodo getInstancia
  include PadraoSingleton  
  attr_accessor :banco    
end

c1 =  Conexao.getInstancia # variavel 1 
c1.banco = "dbpadrao"
puts c1.banco

c2 =  Conexao.getInstancia  # variavel 2
puts c2.banco
c2.banco = "dbpadraoAlterado"

puts c1.banco # novamente a variavel 1
828 Bytes in 2 ms with coderay