IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Implemetation de la classe Singleton


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Ao�t 2005
    Messages
    21
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 21
    Par d�faut Implemetation de la classe Singleton
    //une implemetation d'une classe singleton qui
    //permet l'appel du destructuer de Base
    //ce qui n'est pas le cas pour l'impl�mentation
    //classique de la classe Singleton (cf mon pr�c�dent
    //post)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    class Base //une seule instance de Base
    {
    private :
    	friend class Singleton;
    	Base () {std::cerr<<"constructeur de Base"<<std::endl;};
    public:
    	~ Base() {std::cerr<<"destructeur de Base"<<std::endl;};
    	int toto;
    };
     
    class Singleton //classe chargee de l'instanciation de Base
    {	
    public:
    	static Singleton* Instance()
    	{
    		if (! pt.get())
    			pt=std::auto_ptr<Singleton>(new Singleton);
    		return pt.get();
    	}
    	std::auto_ptr<Base> base;
     
    private:
    	Singleton(): base(new Base) {}
     
    	static std::auto_ptr<Singleton> pt;
    };
     
     
     
    std::auto_ptr<Singleton> Singleton::pt;
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Singleton::Instance()->base->toto=5;
    	Singleton::Instance()->base->toto=12;
    	Singleton::Instance()->base->toto=5;
    	Singleton::Instance()->base->toto=12;
    //une seule instance de Base construite
    	return (0);
    }//appel destructeur
    Bon �a vaut ce que �a vaut .....
    Base pourrait d�river de la classe Singleton mais
    une relation de composition me parait plus judicieuse.



    A+

  2. #2
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Une impl�mentation classique qui d�truit l'objet est :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Singleton
    {
    private: 
      Singleton();
    public:
      Singleton & instance()
      {
        static Singleton myInstance;
        return myInstance;
      }
    };
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  3. #3
    Membre averti
    Inscrit en
    Ao�t 2005
    Messages
    21
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 21
    Par d�faut appel de la methode instance()
    tu fais comment pour appeler la methode instance ?
    Je vois pas trop sinon l'appeler via une instance de
    Singleton, ce qui n'est pas vraiment le but du jeu.
    Si tu pouvais m'�clairer sur cette d�licate question
    ce serait sympa

    Cordialement

  4. #4
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Je pense que Lo�c a simplement oubli� le mot-cl� static pour qualifier instance.

    Sa m�thode est effectivement plus simple et automatique au niveau de la dur�e de vie, mais elle n'est pas adapt�e � tous les cas de figure. Voir la FAQ C++ pour plus de pr�cisions.

    A part �a, les impl�mentations habituelles de singletons g�rent correctement leur destruction (explicitement s'il s'agit d'une instance dynamique), c'est la moindre des choses.

  5. #5
    Membre averti
    Inscrit en
    Ao�t 2005
    Messages
    21
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2005
    Messages : 21
    Par d�faut
    ok, merci � vous deux.
    Cordialement,

  6. #6
    Mod�rateur
    Avatar de bruno_pages
    Homme Profil pro
    ing�nieur informaticien � la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 65
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : ing�nieur informaticien � la retraite
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par d�faut
    D�sol� mais je ne vois vraiment pas en quoi l'impl� de JolyLoic g�re la destruction de l'instance car celle-ci est support�e par une variable statique qui par d�finition ne meure jamais ... sauf avec le programme !

    Sinon je ne vois pas l'interet de la classe, Singleton n'est pas une classe, c'est un design pattern qui l'on applique � un classe, bref on fait en sorte qu'une classe X soit un singleton ... et certainement pas via un h�ritage d'une classe Singleton ! :-)
    Bruno Pag�s, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non � jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  7. #7
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    D�sol� mais je ne vois vraiment pas en quoi l'impl� de JolyLoic g�re la destruction de l'instance car celle-ci est support�e par une variable statique qui par d�finition ne meure jamais ... sauf avec le programme !
    Justement c'est le but : elle sera bien d�truite automatiquement lorsque le programme prendra fin.

Discussions similaires

  1. appelle d'une classe singleton
    Par LeXo dans le forum Langage
    R�ponses: 3
    Dernier message: 27/05/2007, 12h19
  2. Vecteurs non remplis, et classe Singleton.
    Par Flor�al dans le forum SL & STL
    R�ponses: 8
    Dernier message: 23/05/2007, 09h28
  3. R�ponses: 14
    Dernier message: 02/02/2006, 18h32
  4. [introspection][singleton] introspetion de classe � singleton
    Par Jaxofun dans le forum API standards et tierces
    R�ponses: 7
    Dernier message: 18/08/2005, 09h59
  5. fonctionnement de la classe Singleton
    Par lepoutho dans le forum C++
    R�ponses: 11
    Dernier message: 04/08/2005, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo