Primero tengo que señalar el hecho de que CustomExceptionno se extiende, Exceptionpor lo que no es realmente un Exception.
Eso dijo:
Si no le importa el Principio de inversión de dependencia , déjelo como está. Está perfectamente bien que una interfaz dependa de clases concretas, por ejemplo, muchas interfaces dependen Stringo Objectcuáles son clases concretas . La cuestión es que tendemos a creer que las clases que pertenecen al SDK de Java son más estables (menos propensas a cambios de descifrado de código) que las que escribimos.
Por otra mano:
Si desea seguir el DIP (que tiene innumerables beneficios y es mi recomendación), debe hacer una de dos cosas:
Opción 1
- Hacer
CustomExceptionresumen
- Mantener
void onError(CustomException ex)como es
opcion 2
- Hacer
CustomExceptionuna interfaz
- Mantener
void onError(CustomException ex)como es
Con cualquiera de esas opciones, se conformaría con el DIP, ya que la interfaz no dependería de ninguna clase concreta, solo de abstracciones.
En una aplicación directa de inversión de dependencia, los resúmenes son propiedad de las capas superiores / políticas. Esta arquitectura agrupa los componentes superiores / de política y los resúmenes que definen los servicios inferiores juntos en el mismo paquete. Las capas de nivel inferior se crean por herencia / implementación de estas clases o interfaces abstractas . Martin, Robert C. (2003).
- Desarrollo de software ágil, principios, patrones y prácticas. Prentice Hall. pp. 127-131. ISBN 978-0135974445.