Delphi: Rekordkonstruktor vs. Factory-Funktion
Was ist nun die bevorzugte Methode zum Initialisieren von Datensätzen?
Mit einer 'Werksfunktion':
TMyRecord = record
valueX: integer;
valueY: integer;
end;
function MyRecord(const AValueX, AValueY: integer): TMyRecord;
begin
result.valueX := AValueX;
result.valueY := AValueY;
end;
var
myrec: TMyRecord;
begin
myrec := MyRecord(1, 2);
end;
oder ein Konstruktor:
TMyRecord = record
valueX: integer;
valueY: integer;
constructor Create(const AValueX, AValueY: integer);
end;
constructor TMyRecord.Create(const AValueX, AValueY: integer);
begin
self.valueX := AValueX;
self.valueY := AValueY;
end;
var
myrec: TMyRecord;
begin
myrec := TMyRecord.Create(1, 2);
end;
Ich habe das Gefühl, dass die Konstruktor-Dinge mehr gekapselt sind, aber es macht es leicht, beim Lesen von Code verwirrt zu werden. Es sieht aus wie eine Klasse, die keinen Aufruf zur Befreiung hat. Es ist auch mehr zu tippen ...
Warum ziehen Sie eins dem anderen vor?