![]() |
[Tutorial] Singletons in Delphi
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alle miteinander,
ich habe heute mal ein kurzes Tutorial über Singletons in Delphi geschrieben. Das ganze umfasst eine kurze Erklärung über den Begriff "Singleton" und eine Beispielimplementierung. Ich habe versucht das ganze so einfach wie möglich zu halten :) Runterladen kann man das ganze hier und auf meinem Blog: ![]() |
Re: [Tutorial] Singletons in Delphi
Kurz und würzig, bravo und danke!
MfG |
Re: [Tutorial] Singletons in Delphi
Müsste das auf deiner Seite nicht download (pdf, 17kb) statt download (pfd, 17kb) heißen? :stupid:
|
Re: [Tutorial] Singletons in Delphi
Ich schließe mich da voll und ganz Aphton an.
|
Re: [Tutorial] Singletons in Delphi
Upala, stimmt, pdf, danke :)
|
Re: [Tutorial] Singletons in Delphi
Gutes Tutorial. :)
Zwei Anmerkungen hätte ich allerdings noch:
Delphi-Quellcode:
sollte besser nach "implementation" deklariert werden, damit der Entwickler nicht versehentlich direkt auf g_BK zugreifen kann.
var g_BK:Tbundeskanzler;
Der Delphi-Compiler schreibt zurecht eine Warnung aus, dass der Konstruktor nicht in private deklariert werden sollte. Am besten solle es so aussehen:
Delphi-Quellcode:
{$WARNINGS OFF}
constructor Create; {$WARNINGS ON} |
Re: [Tutorial] Singletons in Delphi
Oh okay, die Warnung bekommen ich in D7 nicht :) Danke für die Tips, werd's noch einarbeiten!
|
Re: [Tutorial] Singletons in Delphi
Das Tutorial kommt wie gerufen für mich :) Danke Dir...
SCRaT P.S.: Habe im Netz im Rahmen meiner Recherchen noch einen Singleton gefunden, in dem die Anzahl der Instanzen noch gespeichert wird, und wenn die letzte Instanz (d.h. InstanceCount = 0), dann wird der Speicher komplett freigegeben. Fand ich auch eine "schöne" Sache... |
Re: [Tutorial] Singletons in Delphi
Hallo,
folgendes ist mir aufgefallen: Zitat:
Zitat:
Statt dessen finde ich es sinnvoller im Destruktor eine Exception ausgelöst werden, damit niemand (aus Versehen oder absichtlich) die Singleton-Instanz zerstört.
Delphi-Quellcode:
Die Methode getInstance sollte nach Möglichkeit Threadsicher gestaltet werden, damit beim gleichzeitigen Zugriff durch zwei Threads beide die selbe Instanz erhalten:
destructor TBundeskanzler.destroy;
begin raise Exception.Create('Singleton darf nicht zerstört werden!'); end;
Delphi-Quellcode:
mr2
Function TBundeskanzer.getInstance:TBundeskanzler;
begin if (g_BK = nil) // statt TBundeskanzler.create reicht auch nur Create then InterlockedCompareExchange(g_BK, Create, nil); Result := g_BK; end; |
Re: [Tutorial] Singletons in Delphi
Zitat:
das widerspricht sich total. Von einem Singelton kann es nicht mehr als eine Instanz geben, sonst wäre es ja keines ..... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz