Tutorial.: Entendendo Singleton
Você sabe o que é um Singleton? O Reduto Nerd dá a dica sobre o que se trata, como funciona e como se parece um código em Java que implementa este padrão.
Há 23 padrões clássicos de projeto de software descritos pela obra Design Patterns de autoria de 4 escritores conhecidos como GoF (Gang of Four). Entre eles está o Singleton que restringe a quantidade de instâncias de uma classe para apenas uma.
"Uai, como assim só uma?"
Sim, qualquer tentativa de instanciação, seja lá de onde partir, retornará o mesmo objeto. Isto é, por mais que diversas outras classes declarem um atributo do tipo da classe Singleton, ao tentar criar uma instância, o primeiro objeto criado durante a execução será retornado causando diversas referências (até mesmo com nomes diferentes) apontando para o mesmo lugar.
"Véi! Pra que isso jovem?"
Desta forma, este será um objeto compartilhado visto que seus atributos ou métodos estarão acessíveis para todos (obviamente dependendo dos modificadores de acesso) e com os mesmos valores e comportamentos. Esta classe Singleton é, na grande maioria das vezes, acessível de forma global por meio de atributos e/ou métodos estáticos.
"Como faz?"
Analise o código abaixo:
public class SingletonRN {
//Neste atributo ficará a instância do método
private static SingletonRN instance;
//Método construtor
private SingletonRN() {
//Outras operações de inicialização da classe
}
//Método público que retorna o objeto único
public static SingletonRN getInstance(){
//Se o atributo ainda não foi instanciado, cria-se a instância.
if (instance == null) {
instance = new SingletonRN();
}
//Se já foi instanciado, retorná-la
return instance;
}
}
Basicamente isto!
"Só?"
Esta é a base. Você pode complementar o resto da classe como faria normalmente. Na verdade este é um exemplo de Singleton que não é thread-safe.
"WTF?!"
Isso quer dizer que, se vários objetos tentarem acessar e alterar atributos deste Singleton ao mesmo tempo, o programa ficará instável e poderão ocorrer erros. Tal como um banco de dados é preciso regular o acesso por meio de locks para que uma transação seja bem sucedida. O Singleton funciona do mesmo jeito. A melhor forma de implementar isto depende das regras de negócio do seu programa. Enquanto algo/alguém estiver usando o objeto, pode-se bloquear o acesso de outros, ou permitir somente leitura, etc... Criatividade!
E por hoje é só pessoal!
Esperamos que este tutorial tenha sido proveitoso para vocês
Mandem suas dúvidas e sugestões para que possamos compartilhar com a nossa comunidade.
Gostou do tutorial? Ele te ajudou? Então clique nos botões "Curtir" e "+1", e compartilhe esta publicação no Facebook, pode ser que outras pessoas também a achem útil! =D
Fiquem atentos para mais dicas e tutoriais, aqui mesmo, no Reduto Nerd!
No comments