Lazy Load sorgt dafür, das solche Zuweisungen nur einmal durchgeführt werden.
Delphi-Quellcode:
// Also so gehts:
Function TForm1.GetReAdr: TAdresse;
Begin
If fAddress = Nil Then Begin
Adresse.Vorname := 'a';
Adresse.Name := 'b';
fAddress := Adresse;
End;
Result := fAddress;
End;
// Und so auch
Function TForm1.GetReAdr: TAdresse;
Begin
If not fInitialized Then Begin
Adresse.Vorname := 'a';
Adresse.Name := 'b';
fInitialized := True;
End;
Result := Adresse;
End;
Allgemein ist das LazyLoad-Pattern für Properties so:
Delphi-Quellcode:
Function TMyClass.GetProperty : TSomeValue;
Begin
if fProperty=nil then
fProperty := CreateSomeValue;
result := fProperty;
End;
Damit wird nur beim Zugriff, und dann nur beim ersten, instantiiert. Früher nannte man das 'Fetch on demand'. Heute eben 'lazy load'. Und damit schlägt man dem blöden Compiler ein Schnippchen.