AGB  ·  Datenschutz  ·  Impressum  







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

Verwenden von Pointern

Ein Thema von Getox · begonnen am 28. Dez 2012 · letzter Beitrag vom 2. Jan 2013
 
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Verwenden von Pointern

  Alt 29. Dez 2012, 10:38
Nutze das Singleton Pattern.
[DELPHI]
type
TDeineKlasse = class(TObject)
...
Bei meinem älteren Delphi (BDS 2006) hindert mich niemand daran, beliebig viele Instanzen der TDeineKlasse mit dem 'Create'-Konstruktor zu erstellen (obwohl der Konstruktor ja als privat deklariert ist).

Ich würde für ein Singleton eher so vorgehen:
Delphi-Quellcode:
type
   TSingleton = Class
   private
       class var fInstance: TSingleton;
       class var fRefCnt : Integer;
       class function NewInstance: TObject; Override;
       procedure FreeInstance; override;
    End;
implementation

{ TSingleton }

procedure TSingleton.FreeInstance;
begin
  if fRefCnt=1 then begin
    inherited FreeInstance;
    fInstance:=Nil;
  end;
  dec (fRefCnt);
end;

class function TSingleton.NewInstance: TObject;
begin
  if fInstance=Nil then
    fInstance := TSingleton(inherited NewInstance);
  Result := fInstance;
  inc(fRefCnt);
end;
end.
Dann muss ich gar nicht wissen, das das ein Singleton ist, sondern kann mir immer, wenn ich es brauche, eine Instanz erstellen. Die Objektlogik mappt das ja auf die eine Instanz. Zudem habe ich so keine Möglichkeit, mehrere Instanzen zu erstellen.

Ich persönlich halte das für sauberer, als umständlich über 'GetInstance' auf die globalen Daten zuzugreifen.
  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 08:04 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