Hier wurde das ganze mit Templates gelöst und die entstehenden Probleme für jede andere Implementierung angesprochen. Ich nehme an, ohne Templates ist eine wirklich sichere Implementierung nicht ohne weiteres möglich, sonst hätte Schneeweiß das wohl anders gelöst. Für das ganze Type-Safety-Zeuch müsste ja der Typ der Nachfahren bereits im Basistyp bekannt sein (hat Schneeweiß über das Template realisiert) oder man müsste die entsprechenden Methoden (zumindest das Beschaffen der Instanz) in den Nachfahren type-safe reimplementieren. Wenn man als Instanzvariable den Basistyp benutzt, kommt man mit reimplementiertem Singleton-Konstruktor weiter, aber das ist ja schön der größte Teil des Singletons. Ein sicheres, vererbbares Singleton kann ich mir ohne Template kaum vorstellen, aber vielleicht bin ich nur zu sehr an C++-Eleganz gewöhnt
Jedenfalls hat der Typ
hier auch keine Möglichkeit gefunden, in Delphi ein Singleton zu schreiben, das type-safe ist *und* das seine Singleton-Eigenschaften vererben kann. Seiner Einleitung entnehme ich, daß es auch niemand anders geschafft hat, oder sein Wissen für sich behalten will.
Irgendwo schwirrt aber eine kranke Möglichkeit rum, Templates in Delphi zu simulieren. Das Ding ist zwar hässlich wie die Nacht und nicht annähernd in der Nähe von etwas, das man noch grob als "Benutzerfreundlichkeit" bezeichnen könnte, aber immerhin geht's irgendwie.
Außerdem bastelt jbg
an etwas, aber ich weiß nicht, wie weit er ist und ob er es dir geben will, wenn's noch nicht ganz fertig ist
Aber eine ganz andere Sache: Wie willst du bei 5 verschiedenen Singleton-Nachfahren jeweils eine Instanz ermöglichen? Du bräuchtest dafür doch 5 Variablen, die über die Lebenszeit der Anwendung zugreifbar bleiben. Gibt es auch eine Möglichkeit, in Delphi statische Klassenmember zu deklarieren? Wenn nein, müsstest du doch eh deine
Unit anpassen um 5 globale Variablen zur Verfügung zu stellen, die die Instanzen beinhalten.