Ich versuche gerade, SOLID herauszufinden. Das Prinzip der Abhängigkeitsinversion bedeutet also, dass zwei Klassen nicht direkt, sondern über Schnittstellen kommunizieren sollten. Beispiel: Wenn class A
eine Methode vorhanden ist, die einen Zeiger auf ein Objekt vom Typ erwartet class B
, sollte diese Methode tatsächlich ein Objekt vom Typ erwarten abstract base class of B
. Dies hilft auch beim Öffnen / Schließen.
Vorausgesetzt, ich habe das richtig verstanden, wäre meine Frage, ob es eine gute Praxis ist, dies auf alle Klasseninteraktionen anzuwenden, oder ob ich versuchen sollte, in Ebenen zu denken ?
Der Grund, warum ich skeptisch bin, ist, dass wir für die Befolgung dieses Prinzips einen gewissen Preis zahlen. Angenommen, ich muss die Funktion implementieren Z
. Nach der Analyse komme ich zu dem Schluss, dass das Merkmal Z
aus Funktionalität besteht A
, B
und C
. Ich erstelle eine Fassade Klasse Z
, dass durch Schnittstellen verwendet Klassen A
, B
und C
. Ich beginne die Codierung der Umsetzung und an einem gewissen Punkt , den ich erkennen , dass Aufgabe Z
der Funktionalität tatsächlich besteht A
, B
und D
. Jetzt muss ich das C
Interface, den C
Klassenprototyp, ausrangieren und separate D
Interfaces und Klassen schreiben . Ohne Schnittstellen hätte nur die Klasse ersetzt werden müssen.
Mit anderen Worten, um etwas zu ändern, muss ich 1. den Aufrufer 2. die Schnittstelle 3. die Deklaration 4. die Implementierung ändern. In einer Python direkt gekoppelten Implementierung müsste ich nur die Implementierung ändern .