Boa noite pessoal.
Estou com umas duvidas criticas de mvc. É o seguinte, li em uma apostila o seguinte:
Evite fazer assim:
public class ClienteBO{
public void insert(Cliente c) throws...{
// aplica regras de negocio
ClienteDAO dao = new ClienteDAO();
dao.insert(c);
}
}
“Pois assim, voltaremos a acoplar as nossas camadas, e nao é isso que desejamos. Utilize factories, que produz o DAO necessario na camda de controle, com isso é possível alterar todas as camadas de persistencia, sem obrigar o programador a reimplementar codigos na camda de controle.”
Ele sugere que faca uma classe com o padrao de factory method para gerar a minnha DAO. Mas para isso preciso de uma interface para todas as DAOS, ou seja, se todas as DAOs vao usar a mesma interface, tenho que colocar na interface os metodos abstratos de todas as minhas DAOS. Por exemplo, minha interface podera ter o metodo abstrato: cadastrarCliente(Cliente c), cadastrarProduto(Produto p). Se minha DAO de cliente for implementar essa interface, tera que implementar tambem o metodo de cadastrarProduto(Produto p), isso nao é legal, ate porque vou ter que importar a bean Produto dentro da DAO de cliente, pior, todas as beans do sistema oÔ.
Pelo exemplo da apostila, ficaria assim:
public class ClienteBO{
public void insert(Cliente c) throws...{
// aplica regras de negocio
DAO dao = null; //interface padrao para as DAOs
dao - DAOFactory.getDAO("cliente");
dao.insert(c);
}
}
Assim eu nao precisaria chamar diretamente a DAO de cliente, e sim indiretamente.
Isso é util? Tem uma solucao melhor?
Obrigado pessoal, talvez seja um pouco complicado enter o problema, mais qualqer coisa, so perguntar…
Obs: BO significa Busines Object, Objeto de negocio, seria a controller…