Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Wo häufig benötigte Daten speichern

  Alt 10. Dez 2013, 22:07
Ganz simpel und einfach
Delphi-Quellcode:
unit Layer_App;

interface

type
  IAppLayer = interface
    [{GUID}]
    // Zugriff auf Pfade, die die Anwendung benutzt
    function Paths : TAppPaths;
    // Der aktuelle User
    function User : TUser;
    // Die Datenzugriffsschicht/-en
    function Data : TDataLayer;
  end;

function AppLayer : IAppLayer;

implementation

type
  TAppLayer = class( TInterfacedObject, IAppLayer )
  public
    function Paths : TAppPaths;
    function User : TUser;
    function Data : TDataLayer;
  end;

var
  _AppLayer : IAppLayer;

function AppLayer : IAppLayer;
begin
  if not Assigned( _AppLayer ) then
    _AppLayer := TAppLayer.Create;
  Result := _AppLayer;
end;

end.
Jetzt nur noch überall die Unit einbinden und fröhlich mit dem AppLayer arbeiten.

Genauso denkbar ist natürlich auch dieses hier
Delphi-Quellcode:
unit Layer_App;

interface

type
  AppLayer = class
  public
    // Zugriff auf Pfade, die die Anwendung benutzt
    class function Paths : TAppPaths;
    // Der aktuelle User
    class function User : TUser;
    // Die Datenzugriffsschicht/-en
    class function Data : TDataLayer;
  end;

implementation

// jo hier noch implementieren

end.
Der Zugriff ist bei beiden Varianten absolut gleich AppLayer.User.* .
Ist dann also Geschmacksache mit der Ausnahme, dass bei generischen Methoden, die Interfaces nicht mitspielen.

Delphi-Quellcode:
IFoo = interface
  procedure DoWith<T>( Value : T ); // geht nicht
end;

TFoo = class
public
  class procedure DoWith<T>( Value : T ); // geht
end;
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)

Geändert von Sir Rufo (10. Dez 2013 um 22:57 Uhr)
  Mit Zitat antworten Zitat