domingo, 17 de agosto de 2008

Patrón singleton en ruby

Singleton es un patrón de diseño en ingeniería del software, un singleton es una clase de la que solo se puede obtener un objeto. Se suele utilizar en ocasiones en las que un objeto se utiliza de forma global o por lo que sea existe la restricción de no poder crear más de un objeto de una determinada clase.

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: