Como faço para uma fabrica escolher entre duas opcoes dinamicamente? Podem dar qualquer exemplo ou apenas explicar uma possivel forma…
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…)
[code]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();
}
}[/code]
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();
}
}
Assim, caso eu queira mudar todo o esquema de persistencia da aplicação, é só mudar a classe que é instanciada aí…
Mas se seu caso for mais simples, talvez nem precise disso tudo…
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!