SOLID-Prinzipien entmystifiziert – (I)

Apr 17 2023
Prinzip der Schnittstellentrennung
Schnittstellen dürfen Klassen nicht dazu zwingen, Funktionen zu implementieren, die sie nicht unterstützen, was bedeutet, dass größere Schnittstellen in kleinere aufgeteilt werden sollten, um Unterstützung zu bieten. Beispielszenario Verwenden wir dasselbe Szenario mit der AreaCalculator-Klasse und fügen ihr neue Funktionen hinzu.

Schnittstellen dürfen Klassen nicht dazu zwingen, Funktionen zu implementieren, die sie nicht unterstützen, was bedeutet, dass größere Schnittstellen in kleinere aufgeteilt werden sollten, um Unterstützung zu bieten.

Beispielszenario

Lassen Sie uns dasselbe Szenario mit der AreaCalculator- Klasse verwenden und ihr neue Funktionen hinzufügen. Dieses Mal möchte der Benutzer die Summe des Volumens von Formen wie Würfel, Quader usw.

Schlecht geschrieben

Jede Form, die Sie erstellen, muss die Volumenmethode implementieren , aber Sie wissen, dass Quadrate flache Formen sind und keine Volumen haben, also würde diese Schnittstelle die Quadratklasse zwingen , eine Methode zu implementieren, die sie nicht verwendet.

Dies verstößt gegen das Prinzip der Schnittstellentrennung.

Gut geschrieben

Um diesen Verstoß zu beheben, müssen wir eine neue Schnittstelle namens IShape3D erstellen, um Formen zu verarbeiten, die ein Volumen haben, und die IShape-Schnittstelle beibehalten, um 2D-Formen zu verarbeiten.

Wichtige Vorteile

  1. Hohe Kohäsion – bessere Verständlichkeit, Robustheit.
  2. Niedrige Kopplung – bessere Wartbarkeit, hohe Beständigkeit gegen Änderungen.
  3. Klassen werden nicht gezwungen, Schnittstellen zu implementieren, die sie nicht verwenden.