Primeiro eu tenho que apontar o fato de que CustomException
não se estende, Exception
então não é realmente um Exception
.
Dito isto:
Se você não se importa com o Princípio da inversão de dependência , deixe-o como está. Não há problema em uma interface depender de classes concretas, por exemplo, muitas interfaces dependem String
ou Object
são classes concretas . O fato é que tenderíamos a acreditar que as classes que pertencem ao Java SDK são mais estáveis (menos propensas a alterações de quebra de código) do que as que escrevemos.
Por outro lado:
Se você deseja seguir o DIP (que tem inúmeros benefícios e é minha recomendação), é necessário fazer uma de duas coisas:
Opção 1
- Faça
CustomException
resumo
- Mantenha
void onError(CustomException ex)
como está
opção 2
- Faça
CustomException
uma interface
- Mantenha
void onError(CustomException ex)
como está
Com qualquer uma dessas opções, você estaria em conformidade com o DIP, pois a interface não dependeria de nenhuma classe concreta, apenas de abstrações.
Em uma aplicação direta de inversão de dependência, os resumos pertencem às camadas superior / política. Essa arquitetura agrupa os componentes superiores / de política e os resumos que definem serviços inferiores juntos no mesmo pacote. As camadas de nível inferior são criadas por herança / implementação dessas classes ou interfaces abstratas . Martin, Robert C. (2003).
- Desenvolvimento Ágil de Software, Princípios,> Padrões e Práticas. Prentice Hall. 127-131. ISBN 978-0135974445.