Opa, então estou tentando implementar alguns padrões de SOLID em meus novos projetos, porém algumas tenho empacado na questão de segregação de interfaces estou tendo problemas, estou querendo criar um service generics com um crud completo...
public interface ServiceImpl <E>{
ResponseEntity<List<E>> listar();
ResponseEntity<E> buscar(Long id);
ResponseEntity<E> salvar(E e);
ResponseEntity<E> atualizar(E e, Long id);
ResponseEntity<E> deletar(Long id);
void copiarDTOparaEntidade(E entidade, E dto);
void copiarDTOparaEntidadeUpdate(E entidade, E dto, Long id);
}
Como visto a cima o ServiceImpl foi feito usando generics aonde eu deixo generico o salvar e atualizar por receberem DTOs expecificos de suas entidades, porem quando eu passo a implementar em uma classe esse service, acontede isso.
@Override
public ResponseEntity<AuditoriaDTO> salvar(Object o) {
return null;
}
O campo vira um object, logo não consigo trabalhar com o dto sem instacialo, e tbm não consigo alterar o object para a classe que necessito sem que ele quebre a implementação, se alguem souber como trabalhar nessas situações ficarei grato pelas dicas e ajudas!