Ich habe mehrere Klassen Parent
und Child1
... Child9
in Java implementiert. Parent
ist eine abstrakte Klasse, die alle allgemeinen Variablen der untergeordneten Klassen enthält (viel, was der Hauptgrund ist, warum ich Parent
eine abstrakte Klasse und keine Schnittstelle erstellt habe), einige abstrakte und einige implementierte Methoden.
Einige der untergeordneten Klassen verfügen über benutzerdefinierte Methoden, die für sie spezifisch sind. So oft rufe ich eine untergeordnete Methode mit Downcasting auf:
Parent p = new Child1();
((Child1) p).child1SpecificMethod();
Irgendwie habe ich das Gefühl, dass dies eine schlechte OOD-Praxis ist, aber ich bin mir nicht ganz sicher, ob dies wirklich der Fall ist bzw. wie das Design verbessert werden kann.
- Bearbeiten - Was ich wahrscheinlich sowieso ändern sollte, ist die Tatsache, dass ich die Parent-Klasse verwende, um viele (vorerst) allgemeine Variablen zu organisieren und sie (oder ein Containerobjekt) zu Mitgliedern der konkreten Klassen zu machen.
p
als Parent
? Das Festhalten an allgemeinen Typen ist eine gute Vorgehensweise für APIs und Rückgabetypen, jedoch nicht in demselben Bereich, in dem Sie selbst eine konkrete Klasse zuweisen.