Actualmente estoy tratando de averiguar SOLID. Por lo tanto, el principio de inversión de dependencia significa que cualquiera de las dos clases debe 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 realmente un objeto de tipo abstract base class of B
. Esto también es útil para Abrir / Cerrar.
Siempre que haya entendido correctamente, mi pregunta sería ¿es una buena práctica aplicar esto a todas interacciones de clase o debería intentar 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 característica Z
. Después del análisis, concluyo que la característica Z
consiste en la funcionalidad A
, B
y C
. Creo una clase fachada Z
, que, a través de interfaces, usa las clases A
, B
y C
. Comienzo a codificar la implementación y en algún momento me doy cuenta de que la tarea Z
en realidad consiste en la funcionalidad A
, B
y D
. Ahora necesito desechar la interfaz C
, el prototipo de clase C
y escribir la interfaz y clase D
por separado. Sin interfaces, solo habría que reemplazar la clase.
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 acoplada directamente a python, necesitaría cambiar solo la implementación.