Ajuda urgente quanto a Contrutor private de classes

9 respostas
S

Pessoal, tenho um construtor de classe com moderador private. O problema é que sendo private eu não posso criar instâncias dessa clase. Como seria o método para que eu pudesse instanciar apenas uma vez essa classe? Isso é possível?

Obrigado desde já.

“Blessed are they that mourn: for they shall be comforted”

9 Respostas

L

cara… eu não tenho certeza não, mas pra quê você quer instanciar uma vez só tua classe??

abraço!!

B

Ola,

Este é o famoso padrão Singleton.... vc pode fazer é:

1-> crie um atributo, private static final, de uma instancia da classe, dentro dela mesmo, e crie um metodo static para recuperar este atributo.. assim:
public class Exemplo{
  private static final Exemplo instance = new Exemplo();
  
  private Exemplo(){}

  public static Exemplo getInstance(){
    return instance;
  }
}
E pronto... só vai ter uma instancia da classe Exemplo no sistema.
B

“lounatico”:
cara… eu não tenho certeza não, mas pra quê você quer instanciar uma vez só tua classe??

As vezes é necessário.

L

:oops: famoso singleton! auehauhaue
confesso que pensei nele, mas não entendi muito bem se era essa a pergunta dele… =S

mal aee!! ^^

abraçooo

B

“lounatico”:
:oops: famoso singleton! auehauhaue
confesso que pensei nele, mas não entendi muito bem se era essa a pergunta dele… =S

mal aee!! ^^

abraçooo

Liga não… acontece :slight_smile:

J

Tem um video aí sobre Design Patterns que explica isso:

http://jairelton.com

G

Exemplo de Singleton:

public class Singleton {

  private static final Singleton instance = new Singleton();
 
  private Singleton() {
  }

  public static Singleton getInstance() {
    if (instance == null) {
       return instance;
    }
    return null;
  }

}
I

Contribuindo…

public class Singleton {
    private static Singleton singleton;

    //impede a invocação pelo operador new
    private Singleton() {}

    //singletons não são Thread Safe!
    public static synchronized Singleton getInstance() {
         //lazy programming...
         if (singleton == null) { singleton = new Singleton(); }

         return singleton;
    }

}

T+

S

valeu pessoal…era isso mesmo que estava precisando. É por isso que eu faço parte desse portal; só tem os melhores, dos quais eu, um dia, muito embreve, serei um.

Criado 30 de novembro de 2006
Ultima resposta 2 de dez. de 2006
Respostas 9
Participantes 6