Exemplo do Padrão de Projeto “Singleton” - O “Forever Alone” do Desing Patterns

1 minutos de leitura

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