Ich habe da vor einiger Zeit eine Klasse namens ImageBox gebastelt. Das ist inzwischen eine ziemlich große monolithische Einheit geworden. Nicht alle Anwendungen, in denen ich das einsetze, benötigen die volle Funktionalität. Außerdem habe ich wegen Performanceprobleme die Grundfunktionalität in eine neue Basisklasse verlegt, mit durchschlagendem Erfolg.
Jetzt möchte ich die ursprüngliche Klasse weiter aufteilen, wobei mir dazu bisher nur eine Kette von Unterklassen einfällt. Bisher gibt es:
Basisklasse (neu) Bild anzeigen, nicht skalieren, scrollen mit Maus oder Tastatur
Zoom (skalieren) über lokales Menü, drehen/spiegeln
DnD
weiteres geplant ...
Beim Subclassing ist die Reihenfolge ja fest vorgegeben. Wünschen würde ich mir aber eher eine Art Baukastensystem, wo ich einfach die benötigte Funktionalität gezielt auswählen kann.
Ich kann jetzt natürlich alle gewünschten Kombinationen einzeln aus den Quelltexten erzeugen, aber das bedeutet dann auch, dass etliche Code Teile redundant vorhanden sind.
Als Komplikation kommt dann noch hinzu, das alle diese Stufen einen eigenen Event-Handler haben. Diese müssen in geeigneter Weise, in richtiger Reihenfolge, verkettet werden.
Meine Frage ist jetzt: ist es sinnvoll die verschiedenen Kombinationen durch eine Kette von Ableitungen zu erzeugen, auch in verschiedenen Kombinationen, oder gibt es elegantere Alternativen?