AGB  ·  Datenschutz  ·  Impressum  







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

Ist das ein Pattern?

Ein Thema von Jumpy · begonnen am 28. Mär 2012 · letzter Beitrag vom 28. Mär 2012
Antwort Antwort
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#1

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 06:21
Ich kann es mir jetzt aber nicht verkneifen
zu sagen, dass das kein Singleton ist!

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
mz23
(Gast)

n/a Beiträge
 
#2

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 06:35
Ich kann es mir jetzt aber nicht verkneifen
zu sagen, dass das kein Singleton ist!

Liebe Grüße,
Valentin
Mal sehen, was de.Wikipedia dazu sagt:

http://de.wikipedia.org/wiki/Singleton_(Entwurfsmuster)

Schöne Grüße aus Nürnberg,
Manfred
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 06:44
Ich kann es mir jetzt aber nicht verkneifen
zu sagen, dass das kein Singleton ist!

Liebe Grüße,
Valentin
Mal sehen, was de.Wikipedia dazu sagt:

http://de.wikipedia.org/wiki/Singleton_(Entwurfsmuster)

Schöne Grüße aus Nürnberg,
Manfred
Jetzt frage ich mich aber was soll das?

Popov fragt eigentlich nach Lazy Creation
Himitsu verweist darauf, dass das (Lazy Creation) gerne bei Singletons eingesetzt wird
Valle weist nochmals explizit darauf hin, dass es (Popovs Klasse) kein Singleton ist.

Und die Wikipedia sagt da auch nicht anderes ... (wär ja sonst auch falsch)
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)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 06:50
Muss das Sir Rufo voll und ganz Recht geben Ein richtiges Design Pattern ist es nicht, eher ein Konzept, oder? Kenne das auch unter dem Begriff Lazy Load/Lazy Creation.

Aber das obige Codebeispiel finde ich eher etwas ungeschickt, da der Zugriff auf die Variable fAndereKlasse noch gekapselt werden sollte. Programmierer müssen sonst ja wissen, dass man auf die Get-Methode zugreifen muss und nicht auf fAndereKlasse zugreifen darf. Aber das nur so am Rande
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 07:11
[...] Aber das obige Codebeispiel finde ich eher etwas ungeschickt, da der Zugriff auf die Variable fAndereKlasse noch gekapselt werden sollte. [...]
Wie denn noch als über das Property?
Code:
public
    property AndereKlasse:TAndereKlasse read getAndereKlasse;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 07:21
Popov fragt eigentlich nach Lazy Creation
Lazy initialization um genau zu sein
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#7

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 08:15
Ja, für sich alleine gesehn ist es kein Singleton, aber

- komisch, es sieht vom Code genau wie die Wiki-Beispiele aus.
- abgesehn davon, daß es dort noch in einer statischen Klassenmethode versteckt ist, mit einer globalen Variable.
(wenn man implizit davon ausgeht, daß es von IrgendeineKlasse nur maximal eine Instanz gibt, dann ist es ein Singleton)
- und zusätzlich wird oftmals noch (was in den Wikicodes nicht zu sehn ist, das externe Freigeben der Instanz verhindert, wenn es sich um ein Singleton handelt.

Also nein, es ist Keines, aber mit ein paar Erweiterungen wird es Eines
und nix Anderes hab'sch doch gesagt?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 08:22
Also nein, es ist Keines, aber mit ein paar Erweiterungen wird es Eines
und nix Anderes hab'sch doch gesagt?
Dir ist wohl entgangen, dass es sich hier um eine Aggregation von IrgendeineKlasse und TAndereKlasse handelt oder?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#9

AW: Ist das ein Pattern?

  Alt 28. Mär 2012, 08: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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Mär 2012 um 08:52 Uhr)
  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 11:11 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