Einzelnen Beitrag anzeigen

Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#78

Re: Globale Variablen - warum in der DP so verpönt?

  Alt 11. Mai 2005, 13:20
Wenn jede Property mit Funktionen ausgestattet wird, dann wirds natürlich länger. Sofern das nicht nötig ist, lasse ich die Property auf die Variable direkt zugreifen. Wenns nur um Einstellungen geht, dann kann ich auf Setter-Methoden verzichten.

Ein konkretes Beispiel ist eine Klasse, die mir beim Programmstart lokalisierte Strings lädt. Im Programm greifen mehrere Threads beliebig auf diese Strings zu. Da die Properties alle nur Lesbar sind, benötige ich keine Setter- bzw. Getter-Methoden. Andernfalls könnte in denen die Thread-Synchronisation ablaufen.

Delphi-Quellcode:
type
  TMenuMessages = class(TObject)
  private
    FString1: string;
    FString2: string;
    ...
    {1 Lädt die Übersetzungen }
    procedure LoadMessages;
  protected
    constructor Create;
    constructor CreateInstance;
    class function AccessInstance(Request: Integer): TMenuMessages;
  public
    destructor Destroy; override;
    class function Instance: TMenuMessages;
    class procedure ReleaseInstance;
  published
    property String1 : string read FString1;
    property String2 : string read FString2;
    ...
  end;
LoadMessages wird im Konstruktor aufgerufen. Den Klassenrumpf vom Singleton generiert mir dabei der Modelmaker. In Wirklichkeit ist der einzige Vorteil aber, dass ich die Laden-Methode bei den Daten habe.

Eine neue Variable würde in dem Fall eine neue Property und eine Zeile in LoadMessages bedeuten.
Theoretisch könnte ich LoadMessages auch noch automatisieren indem ich von TPersistent ableite und über alle Published-Properties iteriere. Allerdings setze ich in der den Default-Wert und müsste mir dafür noch was überlegen.

Für bessere Lösungen bin ich aber immer offen.
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat