Countdown

Final Countdown

Faltam dias. Ou segundos.

sexta-feira, 22 de maio de 2015

#21) Singleton - Objeto "global" em Java

Olá!

Hoje venho rapidamente mostrar um recurso que descobri recentemente para criar um objeto global em Java. Um objeto que possa ser declarado em uma determinada classe do programa e reaproveitado em outras classes do mesmo projeto, utilizando para isso o recurso static.  

Assim, se quisermos reutilizar um objeto A em uma classe diferente, declaramos um objeto qualquer B e fazemos o objeto B receber o conteúdo de A através do método getInstance(). Se A ainda não tiver sido declarado, simplesmente o criamos.

Observe que em momento algum criamos um novo objeto B, de modo que sua declaração funciona de modo similar ao tipo ponteiro da linguagem C.

Abaixo, temos um exemplo ilustrativo:

public class Sessao {
    // Variável estática que conterá a instancia da classe
    private static Sessao instance;

    // Construtor privado (suprime o construtor público padrão).
    private Sessao() {}

    // Método público estático de acesso único ao objeto!
    public static Sessao getInstance() {
        if (instance == null)
            instance = new Sessao();
        return instance;
    }

    /*
    Pode criar outros métodos que precise aqui, como getters e setters.
    */
}
Sessao sessao = Sessao.getInstance();
// Aqui popula os atributos da sessão que você irá utilizar

Assim, o objeto sessao receberá o conteúdo do objeto instance, da classe Sessao. Poderíamos fazer:

Sessao sessaoA = Sessao.getInstance();
Sessao sessaoB = Sessao.getInstance();
Sessao sessaoC = Sessao.getInstance();

De modo que todos os objetos sessaoA, sessaoB e sessaoC se referem na verdade ao mesmo objeto estático, como faria um ponteiro. Note que poderíamos criar um objeto de Sessao diferente simplesmente fazendo:

Sessao sessao = new Sessao();


Esse conceito parece bem bobinho, mas é uma solução genial para grandes projetos, como por exemplo o Jogo Bizuca.


Referência:
http://pt.stackoverflow.com/questions/54588/como-criar-manter-variavel-global-em-java-para-login

Nenhum comentário:

Postar um comentário