Hallo barnti,
klingt nach einem interessanten Vorhaben, dass ich in Delphi (außerhalb der
VCL) in veröffentlichten Projekten mit Quelltext bisher nur bei
Log4D sehen konnte.
Generell habe ich zur Lösung ähnlicher Probleme häufig diesen Ansatz gesehen:
- Registratur aller Klassen im Initialization-Abschnitt der jeweiligen Unit. Es ist nicht erforderlich, das in einer zentralen Unit zu tun, sondern jede Unit kann die zu registrierenden Klassen in ihrer Implementierungsunit registrieren.
- Laden der Konfiguration (dem Mapping), die im Wesentlichen einen Schlüssel (hier: Dein Tabellenname) auf eine Klasse abbildet (hier: ein Klassenname). Ist sie geladen, sind Ausdrücke der Art denkbar
myClassName := Configuration.GetClassNameFromKey(myTableName);
Dieser Schritt könnte zB in Deinem Hauptformular geschehen und es spricht nichts dageben, unterschiedliche Konfigurationen für unterschiedliche Formualare, Abläufe oä vorzuhalten.
- Erzeugung der Benötigten Klasse mithilfe der Registratur in der Art
Delphi-Quellcode:
with Registration do
myClass := GetClassFromName(Configuration.GetClassNameFromKey(myTableName);
myObject := myClass.Create(myContext);
Vielleicht solltest Du Dir noch einmal das
Entwurfsmuster abstrakte Fabrik (
abstract factory pattern) ansehen, und in Erwägung ziehen, eine Menge von Fabriken zu konfigurieren, was den Ansatz wesentlich flexibler macht...