Sei que quando nós temos atributos e métodos que serão comuns a mais de uma classe, nós usamos as classes abstratas. Gostaria de uma ajuda/dica, de como eu poderia estar fazendo para evitar a redundancia desses métodos que são operações basicamente caracteristicas dos DAO’s.
Não. Não é por isso que usamos classes abstratas. Usamos para representar uma relação é um.
Por exemplo, no seu modelo, você está dizendo que um usuário é um Role. Conceitualmente, isso não parece fazer o menor sentido.
wilsontads:
Gostaria de uma ajuda/dica, de como eu poderia estar fazendo para evitar a redundancia desses métodos que são operações basicamente caracteristicas dos DAO’s.
Além de herança, que geralmente é a pior opção, existe outra forma de eliminar redundâncias de métodos: criar uma nova classe, que trata do que os métodos repetidos tratam (as vezes mais de uma é necessária) - No seu caso, a hierarquia dos DAOs está pedindo para nascer. Você pode criar uma classe só para gerenciar um pool de conexões, outra para os DAOs em si.
Flavio_machine
Concordo com vc aqui
"Sei que quando nós temos atributos e métodos que serão comuns a mais de uma classe, nós usamos as classes abstratas. "
se a relação “é um”, sinal que tem atributos é métodos comuns.
ViniGodoy
Flavio machine:
Concordo com vc aqui
"Sei que quando nós temos atributos e métodos que serão comuns a mais de uma classe, nós usamos as classes abstratas. "
se a relação “é um”, sinal que tem atributos é métodos comuns.
Ter vários atributos e métodos iguais é um sintoma. Um sintoma de que pode ser que haja uma superclasse.
Agora, sem a relação “é um”, não deveria haver uma superclasse. Então,o mais provável que ocorra é a criação de uma outra classe, e um atributo dessa outra classe na superclasse, ou mesmo em todas as classes onde havia a repetição.