Sollten Standardcontainer in Unterklassen unterteilt oder vererbt werden?
In Online-Foren stößt man häufig auf Fragen zur Praxis der Unterklassifizierung oder Vererbung von Standards Behälter. Obwohl dieser Ansatz für die Erweiterung der Containerfunktionalität praktisch erscheinen mag, wirft er Bedenken auf, die eine Überlegung wert sind.
Warum die Unterklassifizierung von Standardcontainern nicht ratsam ist
-
Mangel an Virtuellem Destruktoren: Standardcontainer verfügen über keine virtuellen Destruktoren. Dies impliziert, dass ihre polymorphe Verwendung zu potenziellen Bereinigungsproblemen in abgeleiteten Klassen führen kann.
-
Verstoß gegen Designprinzipien: Unterklassen von Containern untergraben die Kapselung und verstoßen gegen das Grundprinzip der Erweiterung der Funktionalität durch generisch anwendbare Algorithmen.
-
Einschränkungen bei der Erweiterung des Verhaltens: Vererbung sollte nicht die primäre Methode zur Erweiterung des Klassenverhaltens sein. Dieser Ansatz bindet erweiterte Funktionalität an den Schnittstellenvertrag, was zukünftige Änderungen erschwert.
Ein geeigneterer Ansatz
Anstatt Standardcontainer in Unterklassen zu unterteilen, sollten Sie Folgendes in Betracht ziehen:
-
Externe Algorithmen: Implementieren Sie generische Algorithmen, die mit Containern arbeiten. Dieser Ansatz fördert die Flexibilität und reduziert die Codeduplizierung.
-
Eindämmung: Nutzen Sie die Eindämmung in einer Klasse, um bestimmte Invarianten zu erzwingen oder neue Verhaltensweisen unabhängig vom Container hinzuzufügen.
-
Zusammensetzung: Entscheiden Sie sich wann immer möglich für die Zusammensetzung gegenüber der Vererbung. Dies gewährt Flexibilität und ermöglicht die Einbeziehung einer größeren Bandbreite an Verhaltensweisen in abgeleitete Klassen.
Das obige ist der detaillierte Inhalt vonSollten Sie Standardcontainer in Unterklassen unterteilen oder stattdessen Zusammensetzung und Algorithmen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!