Pessoal…
Tenho uma aplicação que deve instanciar somente uma vez a classe que recupera uma String de conexão que está num arquivo config.properties.
Como posso usar o pattern singleton para tal?
Obrigado
Pessoal…
Tenho uma aplicação que deve instanciar somente uma vez a classe que recupera uma String de conexão que está num arquivo config.properties.
Como posso usar o pattern singleton para tal?
Obrigado
Crie um construtor privado para sua classe, e um método estático que retorne um instância dela.
http://www.cs.wpi.edu/~gpollice/cs509-s04/Patterns/Singleton%20Pattern.html
Certo.
Veja o código da classe.
public final class Chave {
// Referência para instância única
private static Chave instance;
// Construtor privado da classe.
private Chave() {
recuperaStringConexao();
}
public synchronized static Chave getInstance() {
if (instance == null) {
instance = new Chave();
}
return instance;
}
E na classe que precisa recuperar essa informação…
String dataSource = Chave.recuperaStringConexao();
Está correto?
public class Classe {
private static Classe instance;
private static Classe getInstance() {
if(instance == null){
instance = new Classe();
}
private String recuperaString(){
return "recuperaStringConexao";
}
}
}
Para chamar
Classe classe = Classe.getInstance();
String recuperar = classe.recuperaString();
Sem mais, Rodrigo.
Quando postar código, coloque entre as tags [ code] [ /code] assim ele fica endentado e de melhor vizualização.
Quanto a classe, você deve recuperá-la através do getInstance(), e o construtor seria responsável por recuperar a String de conexão. Chamando o recuperaStringDeConexao() você teria tantas instâncias quantas fossem solicitadas.
E uma pergunta. Para que você precisa de Singleton para isso, se a informação está num arquivo separado, por que você não carrega uma Collection com as informações deste arquivo?Não entendi a necessidade do Singleton.
Ok, dica anotada.
Rodrigo, esse código exemplo está correto?
Rafael, valeu pela dica…O uso do Singleton nesse aplicativo foi um pedido do cliente. Na verdade, em vários locais é usado, mas o valor sempre será o mesmo. Então, em vez de ficar instanciando um objeto para cada caso, crio uma única instância.
Valeu
Abs.
Curiosidade,
Por qual motivo tem que ser singleton? Sim, eu vi que o cliente solicitou, mas pq ele quer isso?
]['s
Retira uma chaves “}” porq foi uma a mais.
Dentro do construtor da Classe vc instancia a sua classe q retorna a string de conexão.
Sem mais, Rodrigo.