Suche Design Pattern: Externe Funktion auf Klassenhierarchie anwenden



  • Hallo,
    folgendes Problem:
    gegeben eine Klassenhirarchie, von einer abstrakten Basisklasse A ausgehend.
    Nun sollen beliebige polymorphe Listen von A* ausgegeben werden.
    Die Ausgaberoutine soll aber nicht als (virtuelle) Methode der Klassen selbst implementiert werden (weil sonst Kopplung mit dem Ausgabesystem - unerwünscht).
    Welche anderen Möglichkeiten gibt es? Wie heißen die entsprechenden Desgin-Patterns?

    Was mir spontan nur einfällt:

    1. A mit einem Typ-Feld versehen, dann bei der Ausgabe dieses Typfeld prüfen und entsprechend casten, dann ausgeben.
      Eine Art (hässlicher) externer Polymorphismus "Marke Eigenbau".

    2. Eine parallele Klassenhierarchie aufbauen wo es zu jedem A-Derivat ein B-Derivat gibt, dass die entsprechende Ausgaberoutine bereitstellt. Dazu muss in A aber eine virtuelle Factory-Methode da sein, die das dazugehörige B-Derivat liefert. (Sieht jemand andere Variante?). Dann a->meinDazugehörigesB()->Ausgabe()

    andere Möglichkeiten?



  • Klingt irgendwie ein bisschen nach Visitor... Oder habe ich etwas nicht verstanden?



  • Ah ja. Das wirds wohl sein. Hatte das nicht mehr im Kopf. Danke.


Anmelden zum Antworten