Attualmente sto cercando di capire SOLID. Quindi il principio di inversione di dipendenza significa che due classi dovrebbero comunicare tramite interfacce, non direttamente. Esempio: se class Aha un metodo, che prevede un puntatore a un oggetto di tipo class B, allora questo metodo dovrebbe effettivamente aspettarsi un oggetto di tipo abstract base class of B. Questo è utile anche per Apri / Chiudi.
Se ho capito bene, la mia domanda sarebbe: è una buona pratica applicarla a tutte le interazioni di classe o dovrei provare a pensare in termini di livelli ?
Il motivo per cui sono scettico è perché stiamo pagando un prezzo per seguire questo principio. Di ', devo implementare funzionalità Z. Dopo l'analisi, concludo che caratteristica Zconsiste di funzionalità A, Be C. Creo una facciata di classe Z, che, attraverso le interfacce, utilizza le classi A, Be C. Comincio codifica l'attuazione e ad un certo punto mi rendo conto che il compito Zin realtà consiste di funzionalità A, Be D. Ora ho bisogno di cancellare l' Cinterfaccia, il Cprototipo di classe e scrivere Dun'interfaccia e una classe separate . Senza interfacce, solo la classe avrebbe dovuto essere sostituita.
In altre parole, per cambiare qualcosa, devo cambiare 1. il chiamante 2. l'interfaccia 3. la dichiarazione 4. l'implementazione. In un'implementazione direttamente accoppiata a Python, avrei bisogno di cambiare solo l'implementazione.