Actualmente estoy tratando de resolver SOLID. Entonces, el Principio de Inversión de Dependencia significa que dos clases deben comunicarse a través de interfaces, no directamente. Ejemplo: si class A
tiene un método, que espera un puntero a un objeto de tipo class B
, entonces este método debería esperar un objeto de tipo abstract base class of B
. Esto también ayuda para Abrir / Cerrar.
Siempre que lo haya entendido correctamente, mi pregunta sería si es una buena práctica aplicar esto a todas las interacciones de clase o debería tratar de pensar en términos de capas .
La razón por la que soy escéptico es porque estamos pagando un precio por seguir este principio. Digamos que necesito implementar la función Z
. Después del análisis, concluyo que característica Z
consiste en la funcionalidad A
, B
y C
. Creo una fachada de clase Z
, que, a través de interfaces, usa las clases A
, B
y C
. Comienzo a la codificación de la aplicación y en algún momento me doy cuenta de que la tarea Z
consiste en realidad en la funcionalidad A
, B
y D
. Ahora necesito desechar la C
interfaz, el C
prototipo de la clase y escribir una D
interfaz y una clase separadas . Sin interfaces, solo la clase debería haber sido reemplazada.
En otras palabras, para cambiar algo, necesito cambiar 1. la persona que llama 2. la interfaz 3. la declaración 4. la implementación. En una implementación de Python directamente acoplada, necesitaría cambiar solo la implementación.