Factory Method ou Abstract Factory Method

Olá amigos,

Todos meus sql dos DAO estão em um arquivo properties, que esses DAO tem suas interfaces relacionadas.

A aplicação que estou fazendo só irá acessar banco de dados. Se eu quiser trocar de banco de dados só preciso trocar meu arquivo properties.

Vocês acham que devo usar o Factory Method ou o Abstract Factory Method para criar minhas fabricas de DAO?

uma outra coisa:

é certo mapear cada DAO a uma tabela do Banco de Dados?

muito obrigado a todos,

1 DAO para 1 Tabela está OK.
Você também pode usar DAOs para coisas específicas, por exemplo BaixaDeEstoqueDAO, que envolve vários procedimentos no BD.

Um Factory Method apenas faz mais sentido se vc for SOMENTE utilizar BD.

A não ser que mude para arquivo, FTP, etc… ai sim dá pra colocar um Abstract Factory.

Essa implementação do Factory Method está certa?

public final class DAOFactory{
    public static ClienteDAO getClienteDAO(){
           return new ClienteDAOImpl();
   }

}

public Interface ClienteDAO{
   public void inserir();
}

public class ClienteDAOImpl implements ClienteDAO{
  
  public void inserir(){
    //codigo para inserir
 }
}


no cliente eu usaria:

DAOFActory.getClienteDAO().inserir();

está correto?

outra coisa posso usar “Impl” no final da classe que implementa a interface de DAO ou tem um lugar especifico para usar “Impl”.

gostaria de opiniões de todos.

Melhor ainda:

public final class DAOFactory { public ClienteDAO getClienteDAO() { return new ClienteDAOImpl(); } }

então:

Sobre o “Impl”, está tudo bem.

Caro Daniel,

porque não pode ser static ?

porque essa seria a melhor solução?

valeu Daniel pelas respostas…

Leia isso:
http://www.guj.com.br/forum/viewtopic.php?t=14615

Daniel eu usando metodos estaticos não quer dizer que estou usando singleton.

Metodos static tem desvantagens em termos de performance, EJB e Cluster?

mais uma vez muito obrigado pelas respostas,

valeu

Se não me engano vc não pode (ou não deve) usar static com EJBs.

Métodos estáticos não são OO.

E o que diabos tem a ver “metodos estaticos nao sao OO” (uma afirmacao, alias, falsa) e o fato de que a especificacao de EJBs proibe o uso de ATRIBUTOS estaticos?

Alguns esclarecimentos:

  • Metodos estaticos sao bons
  • Estado estatico eh ruim para aplicacoes J2EE
  • (Quase) todas as linguagens OO possuem metodos de classe, ou metodos estaticos