Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

InterfaceDao?

Parando pra pensar, em um sistema onde teríamos diversas classes e tabelas, ou seja, um método de inserção para a classe produtos, o mesmo para a classe de categorias, etc. Seria vantagem criar uma interface com métodos genéricos de inserção, busca, listagem, enfim, todas as operações em comum entre as classes? Alguém ja viu uma "InterfaceDao", por exemplo?

2 respostas

Interfaces são contratos!

Para dirigir um carro é preciso saber detalhes de como motor funciona?

Não, a única coisa que precisamos saber é como utilizar a interface do carro: volante, pedais, freio de mão, seta, faróis e etc.

Graça a esta abstração somos capazes de dirigir vários modelos de carros diferentes que possuem uma "interface" parecida, isso é bom porque não gostaria de fazer auto escola toda vez que trocasse de carro :)

A forma como Fusca e uma Ferrari aceleram são muitos diferentes na sua mecânica, mas nós motoristas não precisamos saber disso, apenas pisamos no pedal do acelerador.

Em programação é a mesma coisa!

Quando definimos as nossas funções em interfaces estamos abstraindo os detalhes da implementação do nosso usuário, deixando essa lógica para classe responsável, sem dizer que estamos reduzindo o acoplamento do nosso sistema, uma vez que podemos trocar a implementação de um banco de dados A para um B sem que nossos clientes notem a diferença.

Espero ter esclarecido um pouco a sua dúvida, isso também foi confuso para mim no começo, abs!

solução!

Na verdade não rsrsrs...

Eu sei o que é uma interface, o que estava pensando é se é aconselhável ter uma interfaceDAO, que distribuiria os métodos de acesso a banco entre outras classes dao, como por exemplo: O método lista para a classe Categoria e para a Classe Produto. Mas já obtive a resposta no GUJ, e é sim. Essa prática faz parte de um Pattern, inclusive.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software