AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL um Schnittstellenparameter zu sparen

Ein Thema von bernhard_LA · begonnen am 17. Okt 2013 · letzter Beitrag vom 19. Okt 2013
 
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: DLL um Schnittstellenparameter zu sparen

  Alt 17. Okt 2013, 18:47
Wozu gibt es eigentlich Datenmodule? Die sind ja nicht nur dazu da, um Queries etc. vorzuhalten, sondern in dem Programmierparadigma 'Datenmodul' sind es eben die Container, die einen davon abhalten sollen, die ganzen Datenmengen ständig hin und her zu schieben. Früher war das mal eine Performancebremse, heute mindestens eine Spaßbremse.

Gut, das Paradigma ist ca. 40 Jahre alt, aber Delphi ist ja nun mal per se 'old school' (was jetzt nicht negativ zu bewerten sein soll, sondern eher als 'altbewährt' zu verstehen ist).

Also: Ein Datenmodul als allgemeinen Datencontainer instantiieren und als eine Eigenschaft dieses Containers eben deine Klasse mit den Daten.

Wenn später noch mehr dazukommen soll, hat man nun schon einen Container, und das Ganze ist aufgeräumt.

Alternativ kannst Du dir auch eine Klasse bauen, die die fertigen Daten kapselt. Bei Bedarf instantiierst Du dir eine Instanz, die dir dann den Zugriff auf diese Daten ermöglicht. Natürlich ist im Hintergrund eine statische Instanz deiner eigentlichen Datenklasse am werkeln, aber nach außen hin eben nicht. Und deshalb ist das auch weder ein Singleton noch eine globale Variable, also auch nicht für OOP-Modernisten 'böse'.

Delphi-Quellcode:
Type
  TMyDataAccess = class
    private class var Data : TMyData;
  public
    Class Procedure Initialize;
    Function GiveMeData() : TAnyData;
  End;

Implementation

class Procedure TMyDataAccess.Initialize;
Begin
  Data := TMyData.Create;
  Data.TakeLongCalculationTime();
End;

Function TMyDataAccess.GiveMeData : TAnyData;
Begin
  Result := Data.GiveMeData;
End;
...
// Beim Programmstart (oder im initialization-Abschnitt der Unit)

TMyDataAccess.Initialize;
...
// Verwendung

... dataAccess := TMyDataAccess.Create;
    Try
      DoSomethingWith(dataAccess.GiveMeData);
    finally
      dataAccess.Free; // Oder für die Hasenfüße: FreeAndNil (dataAccess);
    End;
...

Geändert von Furtbichler (17. Okt 2013 um 18:54 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz