Jupp, vor allem die Code-Completion ist ein enormer Vorteil.
OK, statt der Variable, bzw. des Klassnamen könnte man auch den
Unitnamen dafür verwenden.
Ob Variable oder Property scheint erstmal egal zu sein.
Aber Ob
Delphi-Quellcode:
public
Variable1 : Integer;
oder
Delphi-Quellcode:
private
FVariable1 : Integer;
public
property Variable1 : Integer read FVariable1 write FVariable1; // bzw. mit Getter und/oder Setter
Klar, kann man später immernoch aus der Variable ein Property machen, aber wenn man diese Variable z.B. schon irgendwo als Var-Parameter übergeben hat, dann knallt es erstmal.
Ist es schon ein Property, dann lassen sich nahezu immer problemlos auch einfach Getter/Setter nachrüsten.
Eventuell dann noch ein Singleton dafür erstellen.
Wenn als normale Class, dann hat man eine globale Instanz für, so als wären die Funktionen einzeln "direkt" aufrufbar.
Und zusätzlich (falls man sich nichts versperrt (globale Variablen uns so), dann lassen sich z.B. für Threads und Co. auch unabhängige weitere Instanzen erstellen/nutzen.
Delphi-Quellcode:
var
HandleWorkflow: THandleWorkflow; // globale Variable z.B. im Initialization oder in einem Class-Constructor erstellt
// oder als "function HandleWorkflow: THandleWorkflow;", welches den Singleton liefert
HandleWorkflow.Variable1 := 123;
So wie diese perversen Form-Vaiablen, welche Delphi standardmäßig bereitstellt.
Wenn es "nur" als einzelne Kapselung dienenn soll, dann Class-Function und Class-Property, sowie Class-Var
Delphi-Quellcode:
type
THandleWorkflow =
class
private class var
FVariable1 : Integer;
private
class procedure SetVariable1(Value: Integer);
public
class constructor Create;
// wird automatisch aufgerufen, wenn die Unit initialisiert wird
class destructor Destroy;
// wird automatisch aufgerufen, wenn die Unit finalisiert wird
class property Variable1 : Integer
read FVariable1
write SetVariable1;
// bzw. mit Getter und/oder Setter
end;
THandleWorkflow.Variable1 := 123;
[/DELPHI]
Wobei ich hier inzwischen auch gern mal Records dafür benutze.
Delphi-Quellcode:
type
THandleWorkflow = record
...
class procedure SetVariable1(Value: Integer); static;
...
end;