AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Design Paddern Singelton - Oder wie verstecke ich Create?
Thema durchsuchen
Ansicht
Themen-Optionen

Design Paddern Singelton - Oder wie verstecke ich Create?

Ein Thema von Highttower · begonnen am 19. Aug 2009 · letzter Beitrag vom 19. Aug 2009
Antwort Antwort
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#1

Re: Design Paddern Singelton - Oder wie verstecke ich Create

  Alt 19. Aug 2009, 08:18
Hallo Tobi,

im Modelmaker kann ich bestimmte Pattern auf Klassen anwenden, u.a. das Singleton-Pattern, welches folgendermassen implemetiert wird:
Delphi-Quellcode:
unit Singleton;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs;

type
  TSingleton = class(TObject)
  protected
    constructor CreateInstance;
    class function AccessInstance(Request: Integer): TSingleton;
  public
    constructor Create;
    destructor Destroy; override;
    class function Instance: TSingleton;
    class procedure ReleaseInstance;
  end;


implementation

{
********************************** TSingleton **********************************
}

constructor TSingleton.Create;
begin
  inherited Create;
  raise Exception.CreateFmt('Access class %s through Instance only',
      [ClassName]);
end;

constructor TSingleton.CreateInstance;
begin
  inherited Create;
end;

destructor TSingleton.Destroy;
begin
  if AccessInstance(0) = Self then AccessInstance(2);
  inherited Destroy;
end;

class function TSingleton.AccessInstance(Request: Integer): TSingleton;

  {$WRITEABLECONST ON}
  const FInstance: TSingleton = nil;
  {$WRITEABLECONST OFF}

begin
  case Request of
    0 : ;
    1 : if not Assigned(FInstance) then FInstance := CreateInstance;
    2 : FInstance := nil;
  else
    raise Exception.CreateFmt('Illegal request %d in AccessInstance',
        [Request]);
  end;
  Result := FInstance;
end;

class function TSingleton.Instance: TSingleton;
begin
  Result := AccessInstance(1);
end;

class procedure TSingleton.ReleaseInstance;
begin
  AccessInstance(0).Free;
end;



end.
Ich arbeite immer mit diesem Ansatz und finde es klappt recht gut.

Hans.
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:05 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