Utilizando o padrão Singleton no Ruby

23/07/08

Singleton é um design pattern usado para restringir a instanciação de objetos, fornecendo um ponto global de acesso a uma única instância de uma classe.

No Ruby, você pode utilizar este padrão da maneira mais simples possível. Basta carregar a biblioteca Singleton.

require "singleton"
 
class Database
  include Singleton
 
  def connect
    @connection = Adapter.connect
  end
end

Ao adicionar o módulo Singleton, você torna o método new privado. Se você tentar instanciar esta classe, verá um erro como este:

NoMethodError: private method `new' called for Test:Class
  from (irb):3
  from :0

Para ter acesso à instância da classe Test, você deve utilizar o método instance.

Database.instance.connect

Muito elegante, assim como quase tudo no Ruby!

Comentários #


#1 Bueno disse:
23 Jul 08, 09:43AM

Cara, eu sei que é uma questão conceitual, mas acho que um Singleton não deveria ser usado como uma "variável global", apesar de muita gente fazer isso.

Ele foi criado para garantir uma única instanciação de determinados objetos.

Abraçs.

Deixe um comentário




Este blog usa o Gravatar.


Não é aceito código HTML:
adicione-o no pastie.caboo.se ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.