Das entspricht ja von der Art her ein wenig der Idee, abstrakte Render / Painter Klassen zu verwenden. Mich stört daran, dass man hier ein wenig an Flexibilität verliert bzw. um einen speziellen Effekt einzubauen, erst die Painter Klasse erweitern muss, um dann die entsprechende Funktion in der Paint Methode der Komponente aufrufen zu können.
Übergibst du dann jeder Komponente einen speziellen Painter, oder benutzt du eine gemeinsames Painter Objekt für alle Komponenten?
Ich überlege grade eine Art Zwischenlösung einzubauen:
- Abstrakte Painter Klasse / Interface nach deinem Schema, die aber nur ein paar wirklich essentielle Grundfunktionen implementiert
- Und zusätzlich soll das aktuelle Device, Canvas, etc. in der Paint Methode der Komponenten zur Verfügung stehen, damit man bei Bedarf noch spezielle Eigenschaften des Render Frameworks nutzen kann