Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

11

01.04.2007, 21:32

Zitat von »"Black-Panther"«


Aber als globale Variable bezeichne ich eine Singleton deshalb schon lange nicht:

Ich habe ja auch nicht gesagt, dass es das gleiche ist, sondern dass es sich ähnelt: beide haben den selben scope und den selben zweck.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

12

01.04.2007, 22:20

Zitat von »"helium"«

C-/C++-Quelltext

1
int &golbaleVariable = *new int(42);


Omg... :roll:

Zitat von »"helium"«


Ich weiß immer noch nicht, was du meinst :(


Siehe rewb0rn's Beitrag, der bringt es eigentlich auf den Punkt was ich meine.
@D13_Dreinig

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

13

02.04.2007, 10:29

Zitat von »"rewb0rn"«

Ich habe ja auch nicht gesagt, dass es das gleiche ist, sondern dass es sich ähnelt: beide haben den selben scope

Ja

Zitat von »"rewb0rn"«

und den selben zweck.

Falsch. Der einzige Zweck eines Singleton ist, dass es nicht mehrfach instanziert werden kann. Einen anderen hat es nicht. Es ist eines der Creational Pattern. Es steuert also die Erzeugung eines Objekts.



@David: Du hast den Begriff "vollwertiges Objekt" verwendet. Ich will wissen, was er bedeutet. Wann ist ein Objekt vollwertig und wann nicht?


Dain OMG verstehe ich nicht. Es ist wohl klar, dass ich das Beispiel nicht in der Praxis anwenden würde, sollte nur verdeutlichen, dass Objekte prinzipiell erstmal keinen Namen tragen.
Why is 6 afraid of 7?
Because 7 8 9

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

14

02.04.2007, 12:33

Zitat von »"helium"«


Zitat von »"rewb0rn"«

und den selben zweck.

Falsch. Der einzige Zweck eines Singleton ist, dass es nicht mehrfach instanziert werden kann. Einen anderen hat es nicht. Es ist eines der Creational Pattern. Es steuert also die Erzeugung eines Objekts.

Natürlich hat es einen anderen! Globalen Zugriff auf ein Objekt zu ermöglichen, genau wie eine globale Variable. Ob man nun die Klasse mehrfach instantiieren kann oder nicht ist dabei völlig nebensächlich. Natürlich gibt es von einem Singleton immer nur eine Instanz, aber das ist bei unserem Vergleich doch völlig egal.

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

15

02.04.2007, 13:03

Zitat von »"rewb0rn"«

Zitat von »"helium"«


Zitat von »"rewb0rn"«

und den selben zweck.

Falsch. Der einzige Zweck eines Singleton ist, dass es nicht mehrfach instanziert werden kann. Einen anderen hat es nicht. Es ist eines der Creational Pattern. Es steuert also die Erzeugung eines Objekts.

Natürlich hat es einen anderen! Globalen Zugriff auf ein Objekt zu ermöglichen, genau wie eine globale Variable. Ob man nun die Klasse mehrfach instantiieren kann oder nicht ist dabei völlig nebensächlich. Natürlich gibt es von einem Singleton immer nur eine Instanz, aber das ist bei unserem Vergleich doch völlig egal.


Den globalen Zugriff zu ermöglichen ist nicht schwer (siehe globale Variabel). Dafür bedarf es keines Patterns. Zu verhindern, das eine Klasse mehrfach instanziert wird schon.

Singeltons bieten gloabeln Zugriff. Ansonsten bräuchte man ebenfalls kein Pattern, das die Mehrfachinstanzierung verhindert.

Das ist im Grunde das prinzip: Taschenlampen leuchten, nicht alles was leuchtet sind Taschenlampen. Singletons bieten globalen Zugriff, nicht alles, was globalen Zugriff bietet sollte auch ein Singleton sein.

Wieso heißt ein Singleton wohl Singleton (zu deutsch einelementige Menge)?


Zitieren wir doch einfach mal das Original:

Intent:
Ensure a class only has one instance, and provide a global point of access to it.
Motivation:
It's important for some classes to have exactly one instance. [...]


Will ich, von überall aus Zugriff auf ein Objekt haben, so würde ich niemals ein Singleton einsetzen, da es nur unnötigen Aufwand bedeutet, der keinerlei Nutzen mitsich bringt. Hierfür gibt es globale Variablen.
Why is 6 afraid of 7?
Because 7 8 9

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

16

02.04.2007, 13:14

Ja streite ich doch auch gar nicht ab, trotzdem garantieren beide Lösungen globalen Zugriff auf ein Objekt (den Teil den du interessanterweise nicht fett markiert hast), und deswegen kann man einen Vergleich ziehen. Mehr hab ich doch gar nicht gesagt. Was für eine Korinthenkackerei...

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

17

02.04.2007, 16:45

Ich sehe immernoch keine Gemeinsamkeit, da für mich die Absichten wann ich was einsetze einfach nichts miteinander zu tun haben.
Kommt mir irgendwie so vor, wie: Der Himmel ist blau, meine Jeans, die ich gerade trage ist blau, also können wir die beiden Sachen doch einfach mal miteinander vergleichen.
Egal, belassen wir es einfach dabei, das du da eine Ähnlichkeit siehst und ich nicht.
Why is 6 afraid of 7?
Because 7 8 9

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

18

02.04.2007, 19:37

Zitat von »"helium"«

Ich sehe immernoch keine Gemeinsamkeit, da für mich die Absichten wann ich was einsetze einfach nichts miteinander zu tun haben.
Kommt mir irgendwie so vor, wie: Der Himmel ist blau, meine Jeans, die ich gerade trage ist blau, also können wir die beiden Sachen doch einfach mal miteinander vergleichen.
Egal, belassen wir es einfach dabei, das du da eine Ähnlichkeit siehst und ich nicht.


Wenn du keine Ähnlichkeit siehst, dann fehlt dir wohl der nötige Blick... :roll:
@D13_Dreinig

19

02.04.2007, 20:08

Ich zitiere mal Andrei Alexandrescu, aus dem Buch Modernes C++ Design:

Zitat


En Singleton-Objekt ist eine verbesserte globale Variable. Die Verbesserung, die dieses Muster bietet, liegt darin, dass kein sekundäres Objekt vom Singleton-Typ erzeugt werden kann.
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

20

03.04.2007, 14:53

Globale Variablen und Singeltons haben gemeinsam, dass sie globalen Zugriff gestatten. Diese Gemeinsamkeit ist völlig belanglos.
Gibt es das Objekt nur einmal: Ja, wird es ein Singleton, nein, wird es keins.

---

Wer zu Teufel hat da Alexandreskus Buch übersetzt? Das ist ja grausam. Falls das tatsächlich die deutsche Fassung des Buchs sein sollte, empfehle ich jedem das Original zu lesen. (Jeder, der mit C++ arbeitet sollte dieses Buch mal gelesen haben).

BTW, ersetz mal spaßeshalber das Wort verbessert "verbessert" durch "eingeschränkt" :) . "Ein Singleton-Objekt ist eine eingeschränkte globale Variable. Die Einschrenkung liegt darin, dass kein sekundäres Objekt vom Singleton-Typ erzeugt weden kann."
Wenn ich das ganze schon so technisch beschreibe, dann kann man auch konsequent dabei bleiben. :P
Why is 6 afraid of 7?
Because 7 8 9

Werbeanzeige