Kann es sein, dass der Titel falsch ist?
Die globale Instanz einer Klasse ist ja eine globale Variable. Aber ich ändere den Titel.
Nein muss sie nicht zwangsläufig sein, denn dafür gibt es Möglichkeiten, diese bösen Nebeneffekte (unkontrolliertes und ungeschütztes Überschreiben) von globalen Variablen zu vermeiden:
Delphi-Quellcode:
unit FooUnit;
interface
type
TFoo =
class
end;
//var
// Foo : TFoo;
function Foo : TFoo;
implementation
var
_Foo : TFoo;
function Foo : TFoo;
begin
if not Assigned( _Foo )
then
_Foo := TFoo.Create;
Result := _Foo;
end;
finalization
_TFoo.Free;
end.
oder bei neueren Delphi Versionen
Delphi-Quellcode:
unit FooUnit;
interface
type
TFoo =
class
private
class var _Foo : TFoo;
class destructor Destroy;
public
class function Default : TFoo;
end;
implementation
class function TFoo.
Default : TFoo;
begin
if not Assigned( _Foo )
then
_Foo := TFoo.Create;
Result := _Foo;
end;
class destructor TFoo.Destroy;
begin
_Foo.Free;
end;
Trotz allem bleibt aber immer noch die Abhängigkeit bestehen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)