In meiner PHP-Bibliothek habe ich eine Klasse "TableContainer". Dazu habe ich verschiedene Objekte, die Tabellen repräsentieren, die meisten generische Datentabellen, dazu einige Spezialtabellen wie TableList, was z. B. eine Tabelle repräsentiert, die nur aus einem Primärschlüssel und einem Varchar besteht, also die SQL-gewordene Hashtable. Die hat dann Spezialmethoden wie resolveValue() oder createValue() bzw. implementiert einen schönen Iterator.
Der TableContainer dient dazu, die Tabellen vorzuhalten, damit ich nicht immer new TableList($pdo, "l_country"); tippern muss und sie nicht mehrmals instantiiert werden. TableContainer ist dabei lazy: ich geb dem Ding Name und Art der Klasse und instantiiere dann erst bei Zugriff, damit nicht wie bei meinem grössten Projekt für jeden Reload 130 Tabellenobjekte erzeugt werden:
$tac = new TableContainer($pdo);
$tac->prepareTable("l_country", "TableList");
$tac["l_country"]; ergibt TableList (oder Exception).
Ob dieses Vorgehen in Java einen Sinn ergibt, sei mal dahingestellt, aber es geht mir jetzt auch ums Prinzip, zu wissen, ob und wie das geht.
Eine HashMap<String, Table> frisst zwar Table und TableList, rückt aber nur noch Table raus.
Ich habe es weder geschafft, mit Reflection ein Objekt auf Grundlage eines Strings als Namen zu instantiieren, noch herauszufinden, ob das überhaupt geht.
Der TableContainer dient dazu, die Tabellen vorzuhalten, damit ich nicht immer new TableList($pdo, "l_country"); tippern muss und sie nicht mehrmals instantiiert werden. TableContainer ist dabei lazy: ich geb dem Ding Name und Art der Klasse und instantiiere dann erst bei Zugriff, damit nicht wie bei meinem grössten Projekt für jeden Reload 130 Tabellenobjekte erzeugt werden:
$tac = new TableContainer($pdo);
$tac->prepareTable("l_country", "TableList");
$tac["l_country"]; ergibt TableList (oder Exception).
Ob dieses Vorgehen in Java einen Sinn ergibt, sei mal dahingestellt, aber es geht mir jetzt auch ums Prinzip, zu wissen, ob und wie das geht.
Eine HashMap<String, Table> frisst zwar Table und TableList, rückt aber nur noch Table raus.
Ich habe es weder geschafft, mit Reflection ein Objekt auf Grundlage eines Strings als Namen zu instantiieren, noch herauszufinden, ob das überhaupt geht.