Su implementación en ruby sería la siguiente.
#!/usr/bin/ruby
class Singleton
@@instance = nil
@contador = nil
def Singleton.createInstance
@@instance ||= new
end
def Singleton.getInstance
@@instance
end
def aumentarContador
@contador = (@contador || 0) + 1
end
private_class_method :new
end
Se declara como privado el método new para evitar crear objetos de la clase.
Como se puede ver instance es una variable de clase y por lo tanto compartida, pero contador es una variable de instancia, sin embargo, si ejecutamos lo siguiente.
s = Singleton.createInstance
s2 = Singleton.createInstance
s3 = Singleton.getInstance
puts s.aumentarContador
puts s2.aumentarContador
puts s3.aumentarContador
Podemos ver que tan solo hay un objeto de la clase Singleton.
0 comentarios:
Publicar un comentario