Hi
Mal eine allgemeine ... fast schon philosophische Frage: Wie tief darf (oder sollte) eine Vererbungshierarchie sein?
Tiefe Vererbungshierarchien sind vielleicht "theoretisch gut", in der Praxis können sie aber schwer wartbar oder schlicht unübersichtlich sein. Auf den Seiten, die man bei Websuchen diesbezüglich so findet (z.B. auf http://www.javaspecialists.eu/archive/Issue121.html ), steht im allgemeinen, dass eine Vererbungstiefe von ca. 5 noch OK ist, es aber in Richtung 10 schon kritisch wird. Grundsätzlich sehe ich die Problematik bei tiefen Hierarchien. Aber ich habe kaum Seiten gefunden, wo auf dieses Thema speziell in bezug auf Java Interfaces eingegangen wurde. Ich denke, dass da zwischen Interface-Hierarchien und Klassen-Hierarchien ein gewaltiger Unterschie ist, und diese "Grenzen" oder Aussagen bezüglich der maximalen Tiefe bei Interfaces praktisch nicht greifen.
Der Anlass für meine Frage: Im Moment bastle ich an einer Art Bibliothek, wo im Moment schon eine "Vererbungs"tiefe von ca. 11 bis 12 vorkommt. Allerdings sind die ersten 7-8 Stufen dieser Vererbung ausschließlich interfaces. Der Teil der Hierarchie, der tatsächlich aus Klassen besteht, ist im Moment die obligatorische Abstract->Default->Special-Kette
interface X
-> class AbstractX implements X
--> class DefaultX extends AbstractX
---> class SpecialX extends DefaultX
Die Bibliothek soll ziemlich allgemein werden. D.h. es soll praktisch die Möglichkeit geben, in jeder Stufe der Interface-Hierarchie eine konkrete Klasse einzuklinken. Die Frage ist, ob man sich diese Möglickeit teilweise verbauen sollte, indem man krampfhaft versucht, die Interface-Hierarchie plattzudrücken, oder ob ich Recht habe mit der Annahme, dass sich die "Daumenregeln" zur maximalen Tiefe der Vererbungshierarchie effektiv nur auf echte Klassen beziehen.
Bin schon gespannt auf eure Meinungen.
Mal eine allgemeine ... fast schon philosophische Frage: Wie tief darf (oder sollte) eine Vererbungshierarchie sein?
Tiefe Vererbungshierarchien sind vielleicht "theoretisch gut", in der Praxis können sie aber schwer wartbar oder schlicht unübersichtlich sein. Auf den Seiten, die man bei Websuchen diesbezüglich so findet (z.B. auf http://www.javaspecialists.eu/archive/Issue121.html ), steht im allgemeinen, dass eine Vererbungstiefe von ca. 5 noch OK ist, es aber in Richtung 10 schon kritisch wird. Grundsätzlich sehe ich die Problematik bei tiefen Hierarchien. Aber ich habe kaum Seiten gefunden, wo auf dieses Thema speziell in bezug auf Java Interfaces eingegangen wurde. Ich denke, dass da zwischen Interface-Hierarchien und Klassen-Hierarchien ein gewaltiger Unterschie ist, und diese "Grenzen" oder Aussagen bezüglich der maximalen Tiefe bei Interfaces praktisch nicht greifen.
Der Anlass für meine Frage: Im Moment bastle ich an einer Art Bibliothek, wo im Moment schon eine "Vererbungs"tiefe von ca. 11 bis 12 vorkommt. Allerdings sind die ersten 7-8 Stufen dieser Vererbung ausschließlich interfaces. Der Teil der Hierarchie, der tatsächlich aus Klassen besteht, ist im Moment die obligatorische Abstract->Default->Special-Kette
interface X
-> class AbstractX implements X
--> class DefaultX extends AbstractX
---> class SpecialX extends DefaultX
Die Bibliothek soll ziemlich allgemein werden. D.h. es soll praktisch die Möglichkeit geben, in jeder Stufe der Interface-Hierarchie eine konkrete Klasse einzuklinken. Die Frage ist, ob man sich diese Möglickeit teilweise verbauen sollte, indem man krampfhaft versucht, die Interface-Hierarchie plattzudrücken, oder ob ich Recht habe mit der Annahme, dass sich die "Daumenregeln" zur maximalen Tiefe der Vererbungshierarchie effektiv nur auf echte Klassen beziehen.
Bin schon gespannt auf eure Meinungen.