Como faço para uma fabrica escolher entre duas opcoes dinamicamente? Podem dar qualquer exemplo ou apenas explicar uma possivel forma…
Fabrica duvida
M
2 Respostas
J
O ideal é usar uma fabrica abstrata e cada fabrica concreta fabrica um tipo especifico de objeto...
ex.: (é o que eu sempre digo mesmo, de DAO, falta de criatividade...)
public interface UsuarioDao{
public void inserir(Usuario usu);
}
public classe UsuarioDaoJdbc implements UsuarioDao{
public void inserir(Usuario usu){
//insere no banco
}
}
public class UsuarioDaoXml implements UsuarioDao{
public void inserir(Usuario usu){
//insere no xml
}
}
public interface DaoFactory{
public UsuarioDao makeUsuarioDao();
}
public class DaoFactoryJdbc implements DaoFactory{
public UsuarioDao makeUsuarioDao(){
return new UsuarioDaoJdbc();
}
}
public class DaoFactoryXml implements DaoFactory{
public UsuarioDao makeUsuarioDao(){
return new UsuarioDaoXml();
}
}
DaoFactory factory = new DaoFactoryXml();
UsuarioDao udao = factory.makeUsuarioDao();
Só que aí tem outro problema, quem vai "fabricar fabricas"? Eu geralmente resolvo isso com um Factory Method ou com uma outra fabrica de fabricas... algo assim:
public class DaoFactoryBuilder{
public DaoFactory buildDaoFactory(){
return new DaoFactoryXml();
}
}
Mas se seu caso for mais simples, talvez nem precise disso tudo...
M
Muito obrigado pela ajuda! Meu caso era bem semelhante! Eu não estava sabendo era como fazer para a escolha dinamica, mas, a última fabrica que voce fez realmente faz com que o cliente nao necessite em absoluto saber qual o tipo de persistencia.
Grato pela ajuda!
Criado 20 de setembro de 2006
Ultima resposta 25 de set. de 2006
Respostas 2
Participantes 2
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Engenharia de Prompt para Devs: Um guia para aprender a... Por Ricardo Pupo Larguesa — Casa do Codigo