Fabrica Simples

Pessoal estou estudando design patterns e usei um factory simple só queria saber se esta correto como eu apliquei o pattern:

A classe abstrata Conexão

package fabrica;

import java.sql.Connection;

public abstract class Conexao {

	public abstract Connection conexao();

}

Classe que estende de Conexao

package fabrica;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConexaoDAO extends Conexao {
	
	@Override
	public Connection conexao() {
	
		Connection conn = null;
		
		try{
			
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/login";
		conn = DriverManager.getConnection(url," "," ");
		
		}
		catch(ClassNotFoundException e){
			
		}
		catch(SQLException e){
			
		}
		
		return conn;
	}

}

Classe Fabrica de Conexao


package fabrica;

import java.sql.Connection;

public class FabricaConexao {
	
	private static ConexaoDAO conexao;
	
	public static Connection conectar(){
		
		conexao = new ConexaoDAO();
		
		
		return conexao.conexao();
		
	}

}

Assim eu sei que posso melhora-lo ainda mais, mas gostaria de saber se esta correto a forma como usei.

Grato.

Cara para uma classe de conexão o padrão mais indicado seria o padrão Singleton, segue abaixo um exemplo.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.uhtm.dao;

import br.com.uhtm.io.Io;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Heitor Neto
 */
public class DBConnection {

	private volatile static DBConnection instance = new DBConnection();
	private String usuario = "root";
	private String url  = "jdbc:mysql://localhost:3306/uhtm";
	private String driver = "com.mysql.jdbc.Driver";
	private String senha = "**********";

	private DBConnection(){
	}

	public static DBConnection getInstance(){

		synchronized(DBConnection.class){
			if(instance == null){
				instance = new DBConnection();
			}
			return instance;
		}
	}

	public Connection getConnection(){

	try {
	    Class.forName(driver);
            return DriverManager.getConnection(url,usuario,senha);
        } catch (Exception e) {           
            JOptionPane.showMessageDialog(null,e.getMessage(), "ERRO", JOptionPane.ERROR_MESSAGE);
            return null;
        }
	}

	public void closeConnection(Connection com) throws SQLException{
		com.close();
	}

}

Depende do que você chama de correto. Se compilar está correto? Se funcionar está correto?

Ou está correto apenas se tiver um bom design? Nesse caso já vai de cada um um bom design.

MAS já te adianto que o seu ConexaoDAO não é um DAO.

DAO não é para fazer conexão e sim para usar a conexão e fazer queries.

[quote=rogelgarcia]Depende do que você chama de correto. Se compilar está correto? Se funcionar está correto?

Ou está correto apenas se tiver um bom design? Nesse caso já vai de cada um um bom design.

MAS já te adianto que o seu ConexaoDAO não é um DAO.

DAO não é para fazer conexão e sim para usar a conexão e fazer queries.[/quote]

Então estou estudando o livro Head First: Design Pattern na verdade estou praticando em exemplos
mais interessantes, só me venho a idéia de fazer com uma conexão de banco de dados só gostaria de saber
se esta correto o conceito de Simple Factory. Obrigado pelo toque do DAO.