Pessoal,
Em primeiro lugar, peço desculpa as moderadores se este não for o local mais adequado para postar esta dúvida. Procurei no GUJ uma sala específica sobre Padrões de
Projeto mas não achei, daí resolvi postar minha dúvida aqui em Java Avançado. Portanto, sintam-se à vontade para mover o tópico para o lugar que acharem mais adequado.
Segue, abaixo, o código de uma classe de conexão, onde estou tentando fazer uma implementação do padrão de projeto SINGLETON, de modo que eu tenha apenas uma
conexão ativa com o banco de dados. A classe está funcionando, ou seja, ela gera a conexão. Como ainda estou aprendendo a mexer com padrões de projeto estou em dúvida se a implementação do SINGLETON está correta no código abaixo :
/*
- FabricaDeConexoes.java
*/
package persistencia;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
/**
*
-
@author Max Carvalho
*/
public class FabricaDeConexoes {
// declaração de atribudos
private static Connection conn;
private String driver;
private String url;
private String username;
private String password;
// construtor
FabricaDeConexoes() {
// inicializa atributos privados
driver = "com.mysql.jdbc.Driver";
url = "jdbc:mysql://127.0.0.1:3306/<nome_do_banco>";
username = "<usuario>";
password = "<senha>";
conn = null;
//invoca método obtemConexao()
obtemConexao();
}
/* inicio metodo obtemConexao() */
private Connection obtemConexao() {
try { // inicio bloco try-catch
// carrega e registra o driver
Class.forName(driver);
// obtem uma instancia de conexao
if ( conn == null ) { // padrao de projeto SINGLETON
conn = DriverManager.getConnection(url, username, password);
}
return conn;
} catch (ClassNotFoundException cnfex) {
System.err.println("Classe do driver não encontrada. Impossível carregar o driver");
cnfex.printStackTrace();
conn = null;
return conn;
} catch (SQLException sqlex) {
System.err.println( "Impossivel conectar" );
sqlex.printStackTrace();
conn = null;
return conn;
}
// fim bloco try-catch
}
/* fim metodo obtemConexao */
} // fim clase FabricaDeConexoes
Então as dúvidas são :
1a - A tentativa de implementação do padrão de projeto SINGLETON nesta classe está correta ?
2a - Eu posso usar apenas a condição booleana para verificar se há uma oura conexão ativa ou tenho que usar em algum lugar o método “instance of” ?
3a - Vocês conseguem enxergar alguma outra coisa que possa ser melhorada nesta classe ?
Agradeço qualquer ajuda que me for enviada.
Max Carvalho