Mehrfachvererbung (mehrere Klassen um ein bestimmtes Attribut erweitern)

cocoon

Erfahrenes Mitglied
Ich möchte mehrere Klassen um ein bestimmtes Attribut erweitern, ohne dafür jede Klasse einzeln anfassen zu müssen. Vielmehr möchte es flexibel halten, so dass auch neu hinzukommende Klassen einfach um dieses Attribut erweitert werden können.

Per Mehrfachvererbung könnte ich einfach eine Klasse mit diesem neuen Attribut von allen bisherigen Klassen ableiten. Leider geht das in Java nicht.

Wie kann ich das alternativ realisieren? Irgendein Entwurfsmuster? Habe mir schon Wrapper, Dekorierer usw. angeschaut, aber die fassen alle die ursprünglichen Klassen mit an.

Konkret:
Ich habe eine Bibliotheks-Verwaltung, die bspw. Medien, Benutzer usw. speichert. Bisher lief diese Anwendung allein. Nun sollen per JMS entfernte Bibliotheken angebunden werden. Ich würde daher gerne jedes Entitiy (Medium, User, etc.) unkompliziert um eine Library Id erweitern.
 
Wenn ich dich richtig verstanden habe, Stichwort: Interface (Schnittstellen). Damit kann man das "Prinzip der Mehrfachvererbung" erreichen, denn Klassen können beliebig viele dieser Schnittstellen implementieren...

gruß
jal1976
 
Moin,

genau - die Konstruktoren der Klasse müssen sich nur in der Art oder Anzahl der Attribute unterscheiden ! !

Gruß
Klaus
 
Wenn ich dich richtig verstanden habe, Stichwort: Interface (Schnittstellen). Damit kann man das "Prinzip der Mehrfachvererbung" erreichen, denn Klassen können beliebig viele dieser Schnittstellen implementieren...

gruß
jal1976

Bei den Attributen stößt man da schnell auf Probleme.
Meine (spontane) Lösung ist eine getter Methode abstract zu machen und jede Instanz davon muss halt sein eigenes Attribut halten. So ist zumindest gewährleistet das der getter implementiert werden muss.
 
Bei den Attributen stößt man da schnell auf Probleme.
Meine (spontane) Lösung ist eine getter Methode abstract zu machen und jede Instanz davon muss halt sein eigenes Attribut halten. So ist zumindest gewährleistet das der getter implementiert werden muss.

Konkret: In Interfaces gibt es keine deklarierten Instanzvariablen. Nur Konstanten können deklariert werden.

Die Lösung mit den getter und setter -Methoden würde ich auch vorschlagen. Einfach in ein Interface und die Klassen alle benötigten Interfaces implementieren lassen.

Deklaration der Methoden als "public abstract" in Interfaces ist redundant, da Methoden in Interfaces dies sowieso immer sind.
 

Neue Beiträge

Zurück