Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Uso válido de herança.

Ola, eu gostaria de expor um exemplo pra poder tirar uma dúvida minha:

Em um dos sistema que eu trabalho nos tínhamos duas telas para elaboração de documentos, ma delas é a própria elaboração e a outra é uma tela mais destinada ao gestor que irá revisar o documento que foi elaborado e dar prosseguimento ao tramite do mesmo. Assim sendo, o código entre essas duas telas era extremamente comum, uma verdadeira replicação que acabava dificultando muito a manutenção (o desenvolvedor sempre mexia em uma tela e não mexia na outra). Pra deixar o código melhor de ser mantido nos tomamos a decisão de criar uma classe um pouco mais genérica onde ela abrigaria toda a codificação em comum e fizemos os dois beans herdarem desta classe, ou seja, usando o extends.

Eu gostaria de saber se essa foi uma das poucas vezes em que a herança seria válida pois o maior problema que eu tive quanto a preferência por usar interfaces é justamente a replicação de código porque nela não existe a implementação que, na maioria das vezes é igual pra vários casos em específico.

Eu sempre tive em mente que era melhor extender a classe e deixar na super a codificação mais genérica e nas filhas que precisarem mudar, sobreescrever os métodos.

Agradeço desde já.

1 resposta
solução!

Olá João,

nesse quesito sobre a herança e os perigos de usá-la, existe um post no blog da Caelum muito legal do Paulo Silveira sobre este assunto. Aqui o link para este post.

De fato a interface por si só pode gerar um problema de réplica de código. Por isso, que muitas vezes comentamos de “prefira composição em vez de herança“. A composição de fato usa a interface para ter a vantagem do polimorfismo e para evitar replicação de código fazemos o processo de compor uma classe com outra. No post do Paulo ele já faz um comparação da composição sobre a herança, e aqui um link da dev media com outro exemplo em que eles compara os dois.