Atualmente, estou tentando descobrir o SOLID. Portanto, o Princípio de Inversão de Dependência significa que quaisquer duas classes devem se comunicar por meio de interfaces, não diretamente. Exemplo: Se class Ativer um método, que espera um ponteiro para um objeto do tipo class B, esse método deve realmente esperar um objeto do tipo abstract base class of B. Isso também ajuda no processo Abrir / Fechar.
Desde que entendi corretamente, minha pergunta seria: é uma boa prática aplicar isso a todas as interações de classe ou devo tentar pensar em termos de camadas ?
A razão de eu ser cético é porque estamos pagando algum preço por seguir esse princípio. Diga, eu preciso implementar o recurso Z. Após análise, concluo que a funcionalidade Zconsiste de funcionalidade A, Be C. I criar uma fachada de classe Z, que, por meio de interfaces, usa classes A, Be C. I começar a codificar a implementação e em algum momento eu percebo essa tarefa Zna verdade consiste de funcionalidade A, Be D. Agora preciso descartar a Cinterface, o Cprotótipo de classe e escrever uma Dinterface e uma classe separadas . Sem interfaces, apenas a classe precisaria ser substituída.
Em outras palavras, para mudar alguma coisa, preciso alterar 1. o chamador 2. a interface 3. a declaração 4. a implementação. Em uma implementação diretamente acoplada em python, eu precisaria alterar apenas a implementação.