AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ist das ein Pattern?

Ein Thema von Jumpy · begonnen am 28. Mär 2012 · letzter Beitrag vom 28. Mär 2012
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.504 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 09:50
Und was macht die öffentliche Funktion oftmals, bei den meisten Singletonpattern?
Die aggregiert einverleibt sich eine Klasseninstanz.

Wenn ich mir jetzt das auf'm Wiki nehm,
Zitat von http://en.wikipedia.org/wiki/Lazy_initialization:
Code:
    private static $types = array();
 
    public static function getFruit($type) {
        // Lazy initialization takes place here
        if (!array_key_exists($type, self::$types)) {
            return self::$types[$type] = new Fruit($type);
        }
 
        return self::$types[$type];
    }
das Array und Static wegmach,
Code:
    private $types;
 
    public function getFruit {
        // Lazy initialization takes place here
        if (!self::$types) {
            return self::$types = new Fruit;
        }
 
        return self::$types;
    }
dann komm ich auf diesen Code.
Delphi-Quellcode:
private fAndereKlasse:TAndereKlasse

TIrgendeineKlasse.getAndereKlasse:TAndereKlasse;
begin
  if fAndereKlasse=nil then
    fAndereKlasse:=TAndereKlasse.Create;
  Result:=fAndereKlasse;
end;
Sehr eigenartig.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list

Geändert von himitsu (28. Mär 2012 um 09:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#12

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 09:54
und Static wegmach
Möhp! Genau das ist ja der Trick beim Singleton, dass es nur eine Instanz geben darf. Wenn du das static wegmachst, gibt es für jede Instanz der Klasse nur eine Instanz (und das ist was ganz anderes)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.504 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 10:01
In Delphi muß es nicht "class static" sein, es reicht schon "class", oder eine ordinäre Prozedur.
Wenn TIrgendeineKlasse die einzige vorhandene Instanz wäre, dann ist AndereKlasse implizit ebenfalls Alleine (ein Singleton).
Und ich hab nie behauptet das währe schon ein Singleton. (noch'n bissl aufmotzen und fert'sch)

Der Billigprogrammierer pappt diesen Code in seine TForm1, und schon hat er ein Singleton.
(solange er nicht auf die Idee kommt TForm1 mehrmals zu erzeugen, aber ist dann meist nur ein Bug und keine Absicht )



Halten wir es also fest:
- es ist noch kein Singleton-Pattern (bissl erweitert wird es vielleicht mal Eines)
- es ist noch kein Lazy-Pattern (bissl erweitert wird es vielleicht mal Eines)
- es ist was Anderes
Zitat:
Wenn du das static wegmachst, gibt es für jede Instanz der Klasse nur eine Instanz (und das ist was ganz anderes)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list

Geändert von himitsu (28. Mär 2012 um 10:07 Uhr)
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#14

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 11:03
Noch mehr Senf:

Früher, als es noch kein OOP gab, hieß das "Fetch on Demand".
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.717 Beiträge
 
Delphi 6 Enterprise
 
#15

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 11:04
1. Ich bin nicht Popov. Aber das sei euch verziehen, Sir.

2. Danke für die Infos.

Ich hab als ich die Frage stellte im Stillen bei mir gedacht, ob das in Richtung Singelton geht, wollte die Frage aber offen halten. Hab somit gelernt, das ein Singelton doch noch etwas mehr ist und den schönen Begriff Lazy Load/Creation/Initialisation neu gelernt, bzw. das Konzept dahinter.

Dazu noch 'ne Frage:
if fKlasse<>nil then... vs. if Assigned(fKlasse) then...
Was ist genau da der Unterschied, ich vermute mal, das letzteres besser ist, wenn ich auch nicht weiß, warum?

Danke,
Jumpy
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.459 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 11:07
Delphi-Referenz durchsuchenSystem.Assigned, da steht' s
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.921 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#17

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 12:00
Was ist genau da der Unterschied, ich vermute mal, das letzteres besser ist, wenn ich auch nicht weiß, warum?
Gibt keinen unterschied, Assigned ist eine built-in inline Function (manche sagen dazu Compilermagic, weil man den Source davon nicht in der System.pas sieht) und erzeugt denselben assembler Code wie ein Vergleich auf nil.

Zitat von Delphi Dokumentation:
Der Aufruf Assigned(P) entspricht bei einer Zeigervariablen dem Test P <> nil und bei einer Prozedurvariablen dem Test @P <> nil.
Assigned kann allerdings nicht in allen Fällen verwendet werden - zum Beispiel bei dem Ergebnis einer Funktion, da man dieses nicht über einen var Parameter weitergeben kann (E2036 Variable required.)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.717 Beiträge
 
Delphi 6 Enterprise
 
#18

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 17:11
OK, danke.
Sorry für das späte Antworten, musste noch schnell mein FIAE Abschlussarbeit, der Grund meiner Fragen in den letzten Wochen, fertig dokumentieren und zur IHK hochladen. Mal sehn was es wird, hauptsache erstmal fertig.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.459 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 17:58
Dann drücken wir doch mal die Daumen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.504 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 19:25
Wofür Assigned einen Vorteil bietet.
> Methodenzeiger

Diese bestehen intern aus 2 Zeigern, also ist ein direktes Prüfen auf nil nicht möglich.
Und wöllte man die internen Zeiger prüfen, dann müßte man sich den Methodenzeiger erstmal in einen lesbaren Typen casten, welcher Zugriff auf die beiden Felder bietet.
> Datenzeiger (Objektinstanz) und Codezeiger (Zeiger auf die Methode/Prozedur)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf