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 :

singleton == anti pattern?


Sujet :

C++

  1. #1
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut singleton == anti pattern?
    Bonjour.
    Dans ce thread http://www.developpez.net/forums/sho...23#post3166323
    Je conseille d'utiliser un singleton plustôt que des variable static. Seulement on me dit que c'est une anti pattern...
    Qu'en pensez vous?

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Re

    Pour moi, les points les plus noirs sont:
    • non testable rééllement (en parlant de test unitaires, pas de test à la main)
    • variable globale vaguement masquée
    • Les dépendances à ce singleton ne sont pas explicites dans les déclarations de classe
    • En écrire un robuste (threadsafe et exceptionsafe) n'est pas à la portée d'un débutant


    Et surtout:
    • le posteur original du thread lié est un débutant dont la solution au problème ne requiert pas le moindre singleton.

  3. #3
    screetch
    Invité(e)
    Par défaut
    singleton c'est un peu le mal. la plupart des gens cherchent en fait un multiton (une instance créée un certain nombre de fois).

    un filesystem : une instance ou plusieurs ? en general, une racine et puis un filesystem peut etre monté sur un autre a la linux. par defaut, rechercher un fichier peut etre fait a partir de la racine, ou bien du point courant, on peut appeler chroot pour changer la racine, etc.

    le coté recursif du filesystem en fait un tres mauvais candidat pour un singleton. mais beaucoup le font quand meme.

    mais bon comme tout, ca se discute et ca depend de la facon dont c'est utilisé.
    on pourrait par exemple opposer que Filesystem::root() est un singleton deguisé.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    • le posteur original du thread lié est un débutant dont la solution au problème ne requiert pas le moindre singleton.
    C'est pas trés claire son problème.
    S'il voulais des static, c'est surement qu'il avait une raison.
    S'il veut accéder à des même valeurs dans différent endroit. Pour moi un singleton est une solution. C'est comme faire un logger. Le singleton est une solution.

    Pour lui j'ai peut être pas compris son problème...

    Mais ca ne change pas la question du singleton == anti pattern

  5. #5
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Lis google sur singleton antipattern et singleton evil. Prend le temps de lire un certain nombre d'articles, ça vaut le coup

    Je tiens encore une fois à insister que bien que je n'aime pas les singletons, il y a des moment où c'est utile de les utiliser, mais c'est extrêmement rare.

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    David a donné un lien vers ma prose sur le sujet, relativement à mon contexte particulier (variables globales avec besoin d'initialisation explicite, et de concurrence d'accès)

    Depuis, j'ai croisé d'autres discussions intéressantes. Encore hier dans les archives d'un (bon) blog que je ne connaissais pas encore : "the variation point", qui faisait référence aux discussions sur le sujet sur object mentor.

    Sinon, avec "singleton anti pattern" sur google, il y a de quoi t'occuper une journée entière.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Réponses: 10
    Dernier message: 06/10/2010, 17h06
  2. Réponses: 3
    Dernier message: 11/05/2010, 16h00
  3. Anti-pattern : exception métier
    Par LittleBean dans le forum Langage
    Réponses: 46
    Dernier message: 27/01/2010, 14h24
  4. JSF EL Singleton design pattern
    Par jad_jad dans le forum JSF
    Réponses: 5
    Dernier message: 09/09/2008, 12h23

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