SOLID-Prinzipien entmystifiziert – (S)

Apr 17 2023
Grundsatz der Einzelverantwortung
Eine Klasse darf nur für einen einzigen Zweck verantwortlich sein, was bedeutet, dass eine Klasse nur eine Art von Aufgabe zu erfüllen hat, wie z. B. (Datenbanklogik, Protokollierungslogik usw.). Beispielszenario Stellen Sie sich eine Anwendung vor, die die Summe der Fläche aller Formen (Kreis, Quadrat, Dreieck usw.) berechnet.

Eine Klasse darf nur für einen einzigen Zweck verantwortlich sein, was bedeutet, dass eine Klasse nur eine Art von Aufgabe zu erfüllen hat, wie z. B. (Datenbanklogik, Protokollierungslogik usw.).

Beispielszenario

Stellen Sie sich eine Anwendung vor, die die Summe der Fläche aller Formen (Kreis, Quadrat, Dreieck usw.) in einem bestimmten Array berechnet und das Ergebnis in einem beliebigen Format ausgibt, das wir benötigen.

Schlecht geschrieben

In der Klasse AreaCalculator berechnen wir nicht nur die Summe der Flächen bereitgestellter Shapes, sondern geben auch Daten im JSON-Format aus. Stellen Sie sich ein Szenario vor, in dem die Ausgabe in ein anderes Format wie CSV, HTML usw. konvertiert werden soll.

Dieser Kodex ist funktional korrekt, verstößt aber gegen das Prinzip der Einzelverantwortung. Die AreaCalculator- Klasse muss nur die Summe der Flächen der bereitgestellten Formen berechnen. Es darf sich nicht um die Anzeige von Daten in JSON oder einem anderen Format handeln.

Gut geschrieben

Um diesen Verstoß zu beheben, müssen wir eine separate Klasse erstellen, um die Ausgabe der Daten aus der AreaCalculator- Klasse zu verarbeiten. Diese neue Klasse AreaCalculatorDisplay übernimmt die Logik zur Ausgabe der Daten in einem beliebigen Format.

Wichtige Vorteile

  1. Testen – Eine Klasse mit einer Verantwortung hat weitaus weniger Testfälle.
  2. Geringere Kopplung – Weniger Funktionalität in einer einzelnen Klasse hat weniger Abhängigkeiten.
  3. Organisation – Kleinere, gut organisierte Klassen sind einfacher zu durchsuchen als monolithische.