Exemplo do Padrão de Projeto “Singleton” - O “Forever Alone” do Desing Patterns
Atualizado em:
Há horas em que necessitamos ter a certeza que há apenas uma instância de uma determinada classe em nosso sistema, classes de configuração, janelas únicas e classes com atributos únicos.
Para isso surge a solução proposta pelo padrão de projetos "Singleton".
Mas como podemos ter a certeza de que haverá apenas uma instância de uma classe em nossa aplicação, veja o exemplo abaixo:
Temos um classe configuração, que contém informações como IP, porta, usuário e senha, para acesso a um banco de dados ou uma aplicação externa, por exemplo.
Vejam o código completo, mais abaixo explico com mais detalhes sua implementação:
public class Configuracao {
private static Configuracao instancia;
private String ip;
private int porta;
private String usuario;
private String senha;
private Configuracao(){
}
public static Configuracao getInstancia(){
if (instancia==null){
instancia=new Configuracao();
}
return instancia;
}
public void autenticar(){
}
/*
* getters e setters e outros métodos
*/
}Vamos as explicações:
Atributo estático para guardar a única instância desta classe
private static Configuracao instancia;
Construtor privado para garantir que ninguém poderá acessá-lo, e desta forma instaciar, fora desta classe
Aqui nosso construtor está vazio, sobrescrevendo o default, nada impede de possuir código dentro dele.
private Configuracao(){
}Mas agora fica a pergunta, se ninguém pode chamar o contrutor, como vou instanciar a classe?
O "pulo do gato" está no método getInstancia()
Método estático que retorna a instância, e se não existir instância a própria classe
public static Configuracao getInstancia(){
if (instancia==null){
instancia=new Configuracao();
}
return instancia;
}
Agora é só chamar a instância em quantas classes você quiser, que sempre terá a certeza de existir apenas uma!
Configuracao conf = Configuracao.getInstancia();
conf.autenticar();Este é, creio eu, o padrão de projetos mais simples, mas muito útil e muito utilizado.
Espero que tenha sido útil, e fiquem na Paz.

Deixe um comentário