Java [OO-Theorie] Architektur-Schwierigkeit durch Einfachvererbung

T

Tersus

Gast
Guten Tag,

ich habe folgende Klassenübersicht.

ArchitekturProblem.png

Nun implementieren die Mengen von Klasse eine Methode identisch und eine unterschiedlich.
Wie kann ich das elegant lösen, ohne die Methodeninhalte zu kopieren?

Ungenügender Lösungsvorschlag:

Ich könnte für die Gruppen A, B und C jeweils eine Abstrakte Oberklasse einführen, in der die MethodeA jeweils für alle Gruppenmitglieder gleich implementiert ist.

Problem ist, dass die MethodeB dann immer noch für jede Klasse der Gruppen D, E und F mit jeweils gleichem Code implementiert werden muss.

Mehrfachvererbung ist in Java nicht möglich.

Wie geht man da ran?
 
Wenn du Mehrfach"vererbungen" machen willst, musst du Interfaces nutzen.
 
@TE: müssen die Methoden wirklich in den Klassen selbst implementiert werden? Ansonsten würde ich da jetzt einfach für jede der Methoden eine eigene Klasse schreiben (welche dann ggf ein Interface implementiert) und dann darauf zugreifen.

Also sprich:
MethodA1Impl, MethodA2Impl und MethodA3Impl die jeweils ein Interface MethodA implementieren. Das gleiche dann für MethodB.

In deinen Klassen greifst du dann auf Objekte der o.g. Klassen zu. Das kann sogar in der AbstractSuperClass passieren wenn du da einfach getMethodA() und getMethodB() als abstract definierst und die dann in den einzelnen implementierenden Klassen implementierst.
 
MethodeA_A, MethodeA_B und MethodeA_C in der Oberklasse implementieren, ebenso B_D, B_E und B_F und dann in den Subklassen die entsprechenden Methoden aufrufen in MethodeA und MethodeB. Oder nicht Java nehmen.
 
Hallo,
du schreibst eine Klasse mit der Implementierung. Anschließend bettest du Instanzen dieser Klasse als Feld in deine anderen Klassen ein. So musst du zwar die Schnittstelle (Methoden etc.) duplizieren, aber nicht die Implementierungen.

Hier würde ich als Roottype auch zu einem Interface greifen. So hast du a) den Overhead der Klassenvererbung nicht und b) kannst du trotzdem sicherstellen, dass alle Klassen die gleichen Member haben.

greetz
hroessler
 
Zurück
Oben