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

Langage Java Discussion :

[Language][Static vs Singleton] Précisions


Sujet :

Langage Java

  1. #1
    Membre actif Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Points : 205
    Points
    205
    Par défaut [Language][Static vs Singleton] Précisions
    Bonjour,
    J'aurai une petite question pour les pros de Java.
    Quelle différence y a t-il (s'il y en a une) d'un point de vue consommation de ressources entre l'utilisation d'un singleton et d'une classe dont tous les membres sont static?

    Merci pour vos précisions...

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2002
    Messages : 125
    Points : 150
    Points
    150
    Par défaut
    je pense que la différence au niveau de la consommation de ressources est négligeable.

    le singleton a l'avantage de te permettre l'héritage et la surcharge des méthodes de la classe, contrairement au static.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Salut ,

    Je te conseil de lire ceci :
    http://christophej.developpez.com/tu...n/multithread/

    vers la fin lorsqu'il parle de la solution du static comme implementation du singleton on peut lire ceci :

    Cette solution présente l'avantage, non négligeable, d'éliminer la synchronisation lors de chaque accès. Cela fonctionne car la machine virtuelle garantit qu'un objet d'une classe ne peut être accédé tant que la classe n'est pas complètement chargée. Toutefois cette solution n'est viable que si toutes les informations nécessaires à la création du Singleton sont disponibles au moment du chargement, ce qui ne peut être toujours garanti. En effet, la machine virtuelle charge les classes comme elle le veut et il n'y a aucune garantie que le chargement soit différé jusqu'au premier appel de la méthode getInstance().

  4. #4
    Membre actif Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Points : 205
    Points
    205
    Par défaut
    solution du static comme implementation du singleton on peut lire ceci
    En fait, ma question concernait plus simplement la différence entre une implémentation entre un singleton (classique, sans MultiThread) et une classe dont toutes les méthodes sont déclarées static...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private MaClasse instance == null
    private MaClasse(){}
    public MaClasse getInstance(){
        if (instance == null)
            instance = new MaClasse;
        return instance;
    }
    et par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private MaClasse{
        static int maMethode1(){}
        static string maMethode2(){}
        static boolean maMethode3(){}
    }
    Conceptuellement, le singleton me semble coller plus à l'esprit de la programmtion object.
    La classe static ressemble plus à un fourre tout dans lequel on placerait des méthodes sans lien réel entre elles.

    Mais présentent t'elles des résultats différents du point de vu performance?
    Y a t-il de bonnes raisons de préférer l'une ou l'autre?

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2002
    Messages : 125
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par jcarre
    le singleton a l'avantage de te permettre l'héritage et la surcharge des méthodes de la classe, contrairement au static.

  6. #6
    Membre actif Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Points : 205
    Points
    205
    Par défaut

    Merci... j'avais bien vu
    Mais c'est tout?

  7. #7
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Salut,

    L'avantage d'un singleton c'est que comme c'est un objet si tu veux specialiser ton singleton suivant la version de la VM par exemple, tu peux le faire dans ton getInstance et tu n'as pas besoin de changer quoique ce soit d'autre dans ton code.

    Alors qu'avec une classe avec tout ses membres static pas moyen de faire ca sauf avec des if/else partout..

    Bulbo

Discussions similaires

  1. [Singleton] Static et Singleton
    Par ecplusplus dans le forum Design Patterns
    Réponses: 13
    Dernier message: 13/03/2009, 19h27
  2. classe Static ou singleton ?
    Par phoeniix07 dans le forum Langage
    Réponses: 39
    Dernier message: 11/02/2008, 18h02
  3. methode static Vs singleton
    Par BigNic dans le forum C++
    Réponses: 4
    Dernier message: 22/02/2007, 10h19
  4. singleton et static
    Par elekis dans le forum C++
    Réponses: 2
    Dernier message: 10/09/2005, 16h11
  5. [Language][DAO]Pourquoi pas des Singletons ?
    Par le Daoud dans le forum Langage
    Réponses: 11
    Dernier message: 04/05/2005, 09h16

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