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