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 A
tiver 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 Z
consiste de funcionalidade A
, B
e C
. I criar uma fachada de classe Z
, que, por meio de interfaces, usa classes A
, B
e C
. I começar a codificar a implementação e em algum momento eu percebo essa tarefa Z
na verdade consiste de funcionalidade A
, B
e D
. Agora preciso descartar a C
interface, o C
protótipo de classe e escrever uma D
interface 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.