Also es handelt sich hier um das
Singleton Design Pattern.
Delphi-Quellcode:
implementation
var
_Muster:TMuster;
// nicht sichtbar ausserhalb der Unit
class function TMuster.SingleInstance: TMuster;
begin
if not Assigned(_Muster)
then
_Muster := TMuster.Create;
Result := _Muster;
end;
initialization
finalization
FreeAndNil(_Muster);
Durch die Verwendung der Klassenfunktion SingleInstance wird klar, dass es sich hier um ein Singleton handelt.
Später wird die Klasse so verwendet:
Delphi-Quellcode:
procedure Beispiel;
var
m : TMuster;
begin
m := TMuster.SingleInstance;
m.irgendwas := ...;
// wichtig: NICHT m.Free aufrufen !
end;
Alternativ geht das auch mit With:
Delphi-Quellcode:
with TMuster.SingleInstance do
begin
irgendwas := ...;
Die Lösung mit einer globalen Funktion wie im Vorgängerbeitrag ist auch korrekt,
aber ich denke, dass meine Lösung es noch besser auf den Punkt bringt.