Go to English Blog

Utilizando o padrão Singleton no Ruby

Leia em menos de um minuto

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!