SOLID-Prinzipien entmystifiziert – (L)

Apr 17 2023
Substitutionsprinzip von Liskov
Übergeordnete Klassen müssen problemlos durch ihre untergeordneten Klassen ersetzbar sein, d. h. wenn die Klasse Rectangle ein Untertyp der Klasse Shape ist, sollten wir in der Lage sein, Shape durch Rectangle zu ersetzen, ohne den funktionalen Fluss zu unterbrechen. Beispielszenario Stellen Sie sich eine Anwendung vor, die eine Basisklasse Tier hat, die viele Unterklassen wie Hund, Katze usw. hat.

Übergeordnete Klassen müssen problemlos durch ihre untergeordneten Klassen ersetzbar sein, d. h. wenn die Klasse Rectangle ein Untertyp der Klasse Shape ist, sollten wir in der Lage sein, Shape durch Rectangle zu ersetzen, ohne den funktionalen Fluss zu unterbrechen.

Beispielszenario

Stellen Sie sich eine Anwendung mit einer Basisklasse Animal vor , die viele Unterklassen wie Dog , Cat usw. hat. Jede Unterklasse muss durch die Basisklasse Animal ersetzbar sein .

Die Snail- Klasse ist eine Unterklasse, die nicht alle Methoden der Animal- Basisklasse implementieren kann, so dass, wenn sie durch die Basisklasse ersetzt wird, der Funktionsfluss der Anwendung unterbrochen wird.

Alle Unterklassen sind durch die Tierbasis ersetzbar, mit Ausnahme der Schneckenklasse, daher verstößt dies gegen das Substitutionsprinzip von Liskov.

Das Ziel dieses Prinzips ist es, im Grunde zu verhindern, dass unser Code aufgrund neuer Funktionen beschädigt wird. Dies steht auch im Einklang mit unseren ersten beiden Prinzipien Single Responsibility und dem Open-Close-Prinzip .

Wichtige Vorteile

  1. Kann die Unterklasse einer übergeordneten Klasse genauso verwenden wie die übergeordnete Klasse, ohne etwas zu beschädigen.
  2. Unterklassen können Methoden der übergeordneten Klasse ändern/überschreiben.
  3. Unterklassen können keine neue Funktion definieren, die in der Elternklasse nicht vorhanden ist.