ewx hat geschrieben:Hintergrund der Frage ist tatsächlich, ob es irgendwie einigermaßen einfach möglich ist, zwei (oder mehrere) Versionen gleichzeitig vorzuhalten. Version 1 soll produktiv gehen und auch weiter wartbar sein während bereits an Version 2 programmiert wird.
Hallo Enno,
1.)
im Allgemeinen wird so etwas schon vom Prinzip her nicht gehen:
Grund: Beispiel - APPEND an die VBAP mit einem Zusatzfeld welches auf dein Datenelement deines Pakets referenziert. Eine Versionierung dieses Datenelements ist hier einfach nicht möglich.
Somit könnte es nur im Speziellen gehen wo solche Fälle ausgeschlossen sind.
2.)
Eure ganz spezielle Situation, wo schon eine aktuelle Version existiert und an Version 2 programmiert werden soll.
Mein ursprünglicher Vorschlag mit der abstrakten Factory scheint mir immer noch als ein sehr probates Mittel, da man sehr viele der zu versionierenden Elemente auf Methodenaufrufe/Klassendefinitionen zurückführen kann. Aber da ihr ja schon eine Version habt, könnt ihr ja nicht mehr "on the fly" dort einen abstr. Factoryaufruf zur Erzeugung einer Klasse durch einen direkte Klassenerzeugung ersetzen, weil ihr damit eure "Version 1" nicht stabil halten könnt.
Was euch da noch bleibt wäre bei einer Änderung für Version 2 zunächst eine Kopie des zu ändernden Elements anzulegen ( damit die Version1 stabil bleibt ). Nun muss an allen Verwendungsstellen des Elements auch das neue Element verwendet werden wobei ihr hiermit zunächst mal eine ganze Reihe von Kopien erzeugt. Und wenn ihr jetzt die Verwendung des Elements in den Kopien durch den Einsatz einer abstrakten Factory ersetzt könnt ihr zumindest für die Folgeversionen 3,4,5... auf diese Aktionen verzichten.
Aufwand ist das aber allemal - und ob du das als "einfach" bezeichnen möchtest sei mal dahin gestellt. Durch die nachträgliche Benutzung einer abstrakten Factory eher nicht.