SingleTon Klasse



  • SideWinder schrieb:

    @interpreter: new ohne delete? o-O :p

    Das delete muss halt der Benutzer aufrufen, wenn er das Objekt nicht mehr benötigt (oder u.U. ne statische destroyInstance() Methode anbieten)



  • @sidewinder am template kanns nicht liegen, das macht der gute andrei alexandrescou genauso 🙂

    Singleton Pattern besagt: Es darf maximal eine Instanz der Klasse geben.

    ok, diese regel brech ich, aber nur insofern, dass der rumpf der klasse mehrfach existiert, im gegenzug verhindere ich aber, dass referenzen oder pointer auf das innenleben des objekts erstellt werden,sodass ich mir garkeine sorgen um ein externes delete zu machen brauche 🙂



  • interpreter schrieb:

    Singleton Pattern besagt: Es darf maximal eine Instanz der Klasse geben.

    Lesen und vor allem Suchen bildet: http://www.c-plusplus.net/forum/viewtopic.php?t=57731&highlight=singleton



  • Shlo schrieb:

    interpreter schrieb:

    Singleton Pattern besagt: Es darf maximal eine Instanz der Klasse geben.

    Lesen und vor allem Suchen bildet: http://www.c-plusplus.net/forum/viewtopic.php?t=57731&highlight=singleton

    Schön. Und ich kann dir tausende Seiten zeigen, auf denen du meine Definition finden wirst. Außerdem wäre sonst der Name "Singleton" nicht richtig.



  • aus dem link:

    😎 Der entscheidene Punkt beim Singleton-Pattern ist, dass es für die eine Instanz (oder die sieben oder die 42) eine *globale* Zugriffsmöglichkeit gibt.

    würde das meinen design vorschlag nicht eigentlich schon wieder legitimieren?
    der ctor der klasse wäre in dem fall der globale zugriffspunkt auf die eine instanz des zu verwaltenden objekts(oder seh ich hier mal wieder was falsch? 😞 )



  • interpreter schrieb:

    Außerdem wäre sonst der Name "Singleton" nicht richtig.

    Finde ich nicht. In dem Kontext muss 'single' sich nicht unbedingt auf die Anzahl der instanziierbaren Objekte beziehen...



  • auch wenn ihr mich jetzt hassen werdet, aber ich poste mal das singleton in java. ist besser lesbar als der ganze c++ kram hier und lässt weniger raum für missverständnisse 😉

    public class Single
    {
         static private Single instance = null;
    
         private Single() 
         {
         }
    
         static public Single getInstance()
         {
             if (instance == null)
                 instance = new Single();
             return instance;
         }
    }
    


  • net schrieb:

    auch wenn ihr mich jetzt hassen werdet, aber ich poste mal das singleton in java. ist besser lesbar als der ganze c++ kram hier und lässt weniger raum für missverständnisse 😉

    public class Single
    {
         static private Single instance = null;
    
         private Single() 
         {
         }
    
         static public Single getInstance()
         {
             if (instance == null)
                 instance = new Single();
             return instance;
         }
    }
    

    Japp. Genau diese Art der Implementierung habe ich schon dutzende Male gesehen.



  • Ist ja auch die einfachste, bloß wenn das Objekt viele Resourcen benötigt und eventuell gar nicht benötigt wird ist sie fehl am Platz.

    MfG SideWinder



  • Shlo schrieb:

    interpreter schrieb:

    Außerdem wäre sonst der Name "Singleton" nicht richtig.

    Finde ich nicht. In dem Kontext muss 'single' sich nicht unbedingt auf die Anzahl der instanziierbaren Objekte beziehen...

    Nein. Natürlich nicht. Das Single soll verdeutlichen, dass es mehrere Instanzen geben kann! Man kanns sichs auch zurechtformen, wie mans braucht... 🙄
    Schau bitte noch mal nach, was genau singleton bedeutet.



  • Ich verstehe nicht warum ihr für eine einzige Instanz eine ganze Klasse braucht:

    template<class T>
    T& my_instance()
    {
        static T a;
        return a;
    }
    

    reicht vollkommen.



  • SideWinder schrieb:

    Ist ja auch die einfachste, bloß wenn das Objekt viele Resourcen benötigt und eventuell gar nicht benötigt wird ist sie fehl am Platz.
    MfG SideWinder

    Weshalb sollte sie dann fehl am Platz sein?



  • @Shlo: Ganz sicher, dass du den Sinn von Singletons verstanden hast? Nicht eine erstellen, sondern *maximal* eine erstellen.

    T& obj = my_instance<T>();
    T obj2; // ohje
    

    BTW: static ist ein heißer Tip.

    MfG SideWinder



  • Shlo schrieb:

    Ich verstehe nicht warum ihr für eine einzige Instanz eine ganze Klasse braucht:

    template<class T>
    T& my_instance()
    {
        T a;
        return a;
    }
    

    reicht vollkommen.

    Das hat nichts mit Singleton zu tun, da hier überhaupt keine Begrenzung der Anzahl an Instanzen durchgeführt wird.
    Nebenbei: Eine Referenz auf ein lokales Objekt?



  • interpreter schrieb:

    Nein. Natürlich nicht. Das Single soll verdeutlichen, dass es mehrere Instanzen geben kann! Man kanns sichs auch zurechtformen, wie mans braucht... 🙄
    Schau bitte noch mal nach, was genau singleton bedeutet.

    Und wieder ein gescheiterter Versuch, sich auf einer äußerst dämlichen Weise, zu rechtfertigen... Aber was solls, mit der Wand zu reden würde mehr Sinn machen, als mit dir. Ich gebe auf...



  • SideWinder schrieb:

    @Shlo: Ganz sicher, dass du den Sinn von Singletons verstanden hast? Nicht eine erstellen, sondern *maximal* eine erstellen.

    Zu schnell getippt, static müsste da stehen.



  • Shlo schrieb:

    interpreter schrieb:

    Nein. Natürlich nicht. Das Single soll verdeutlichen, dass es mehrere Instanzen geben kann! Man kanns sichs auch zurechtformen, wie mans braucht... 🙄
    Schau bitte noch mal nach, was genau singleton bedeutet.

    Und wieder ein gescheiterter Versuch, sich auf einer äußerst dämlichen Weise, zu rechtfertigen... Aber was solls, mit der Wand zu reden würde mehr Sinn machen, als mit dir. Ich gebe auf...

    Diese Masche scheinst du immer zu bringen, wenn du nicht mehr weiter weißt. 🙂
    Zu meiner Aussage: Du weißt was Ironie ist?



  • interpreter schrieb:

    Zu meiner Aussage: Du weißt was Ironie ist?

    Ah, das nennst du so, genau so wie mit deiner Rhetorik... Alles klar. lol 🤡



  • Shlo schrieb:

    interpreter schrieb:

    Zu meiner Aussage: Du weißt was Ironie ist?

    Ah, das nennst du so, genau so wie mit deiner Rhetorik... Alles klar. lol 🤡

    Ich schreibs am besten jetzt immer dazu 🙂



  • interpreter schrieb:

    Ich schreibs am besten jetzt immer dazu 🙂

    Ja, müsste ich auch. (das war keine) 🙄 🤡


Anmelden zum Antworten