Buscar

Padrão Singleton: Garantindo uma única instância

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
SINGLETON
*
*
SINGLETON
O padrão de projeto (Design Pattern) Singleton tem entre outras funções a garantia de apenas uma instância de determinada classe, ou seja, somente um objeto por classe.  Para o desenvolvimento de tal implementação existem algumas maneiras, mas a tradicional é baseada no uso de atributos estáticos e da modificação do controle de acesso do construtor, onde um membro externo depende de uma propriedade para “requisitar” uma instância.
*
*
SINGLETON
*
*
SINGLETON
Classe Singleton
Considerando as características temos:
1)      Variável estática contendo a instância para a classe;
2)      Construtor declarado private.
3)      Método para requisitar instância.
A implementação em Java seria a seguinte:
public class PadraoSingleton{
	private static PadraoSingleton padraoSingleton;
	private PadraoSingleton(){}
 
	public static PadraoSingleton getInstance(){
		if (padraoSingleton == null){
			padraoSingleton = new PadraoSingleton();
		}
	return padraoSingleton;
	}
}
Singleton na Prática
O uso do padrão Singleton, normalmente está associado a economia de recursos, ou melhor, quando a resposta para seguinte pergunta é verdadeira:
Quando você precisa de uma única instância?
*
*
SINGLETON
Por exemplo, quando múltiplas instâncias não fazem sentido, quando estas instâncias apenas desperdiçam memória ou processamento. Na pior das hipóteses, quando múltiplas instâncias causam um comportamento incorreto para o software. Desta forma também garante um ponto de acesso global para acesso a instância.
Considerando o escopo de vida do Singleton, o mesmo é iniciado na primeira requisição e finalizando apenas quando a aplicação é encerrada. O que pode considerar uma longa vida caso o mesmo seja usado somente uma vez, assim o uso do mesmo deve ter uso considerado sem esquecer que o escopo do mesmo é de todo um programa, um sistema ou mesmo um sistema distribuído.
Este padrão tem um uso comum em conexões com banco de dados, pois o mesmo proporciona uma única instância, ou seja, canal de comunicação entre a aplicação e o SGBD. 
Reconsiderando o uso do Singleton em implementações de Classes de conexão com banco de dados, não se pode esquecer que a sobrecarga de execução das sintaxes será toda sobre uma única thread, o que pode ocasionar outros problemas à aplicação.
*
*
SINGLETON
O padrão Singleton em resumo proporciona uma única instância e fornece um ponto global de acesso a mesma..
O Singleton é um dos padrões de projeto mais simples. Ele é usado quando for necessária a existência de apenas uma instância de uma classe. Foi apresentado no GoF como um padrão de criação, por lidar com a criação de objetos.
Segundo o GoF para uma classe ser um singleton, deve-se garantir que haverá apenas uma instância na aplicação e que deve-se fornecer um ponto de acesso à mesma. Mas como garantir que haverá apenas uma instância? É de conhecimento comum que, para criar uma instância de uma classe, devemos chamar o seu construtor. Assim, para resolvermos o problema, devemos restringir o acesso ao construtor, tornando-o um método privado. Em seguida, deve-se utilizar um método público que faça o controle da instanciação, de modo que ela só possa ser feita uma vez.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais