Ich entwickle eine Reihe von Post-Filtern für eine WordPress-Site und habe die ersten 4 mit einer einzigen Klasse erstellt.
Die letzten beiden unterscheiden sich im Umfang genug, um nur eine einzige Funktion (die Funktion zum Erstellen der endgültigen Links) in ihren Klassen gemeinsam zu nutzen.
Ist es in diesem Fall oder in einer Reihe ähnlicher hypothetischer Fälle sinnvoll, die ursprüngliche Klasse zu erweitern, um diese Funktionalität zu erhalten, oder gibt es einen besseren Weg?
object-oriented
class-design
Milder Flaum
quelle
quelle
Antworten:
Nein, wenn die beiden Klassen so unterschiedlich sind, dass sie nur eine Funktion gemeinsam haben, sind sie wahrscheinlich nicht austauschbar - und würden daher das Prinzip der Liskov-Substitution brechen .
Leiten Sie nur von einer Basisklasse ab, wenn dies logisch ist. Das Teilen eines einzelnen Codeteils ist selten eine Rechtfertigung für die Vererbung :)
In diesem Beispiel klingt es so, als ob Sie diese Funktion stattdessen über die Komposition wiederverwenden möchten ...
quelle
Wenn eine Klassenbeschreibung das Wort " und " enthält, sollte sie in zwei (oder mehr) Klassen unterteilt werden. So wie es aussieht, könnten Sie diese Funktion zu einem Mitglied einer anderen Klasse machen, auf die von denjenigen verwiesen wird, die Sie derzeit haben.
quelle