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





Não é aceito código HTML: adicione-o no pastie.org 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.

JavaScript Avançado

O JavaScript é a única linguagem que muitos acreditam saber sem nunca terem parado para realmente aprendê-la. Neste workshop rápido você entenderá de verdade todos os conceitos avançados do JavaScript em 4 horas puramente práticas.

Saiba mais Fechar

Conheça também o HOWTO