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 :

Singleton et méthode static


Sujet :

Langage Java

  1. #1
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut Singleton et méthode static
    Bonsoir,

    Si une classe implemente le pattern singleton, existe-t-il une raison pour qu'une de ses méthodes soit static ?

    Merci de vos suggestion..

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    La méthode permettant d'accéder au singleton, par exemple . (En fait, pas forcément, mais disons que ça reste un cas typique.)

    Singleton ou pas, ça n'a pas vraiment d'importance, les méthodes statiques sont une curiosité pas vraiment nécessaires, mais qui sont en réalité des "fonctions" globales, rangées, associées avec la classe qui leur correspond le mieux.
    Disons que s'il y a besoin d'une méthode statique, et que sa fonctionnalité est très liée à la classe en question, alors oui, sa place est là. Rien à voir avec quelque pattern que ce soit.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pour garantir le pattern Singleton, il FAUT que le constructeur soit déclaré "private" (pour interdire une instanciation) et au moins UNE méthode static pour récupérer l'instance unique de l'objet (on l'appelle généralement getInstance()).

    Pour le reste, static ou non static, tout dépend de ce qu'on fait.
    Il est très intéressant dans une classe utilitaire de n'avoir que des méthodes static, ça évite d'avoir à créer une instance d'un objet pour les utiliser.
    Typiquement, pour l'acquisition d'une connexion à la base de données, on ferait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class DBUtils
    {
       public static Connection getConnection()
       {
          try
          {
             Class.forName("la classe du driver");
             return DriverManager.getConnection("url de la base", "user", "password");
          }
          catch (Exception e) {}
          return null;
       }
    }
    Avec ce genre d'outil, quelque soit la classe dans le projet, on pourra récupérer une connexion comme ceci, sans instance de DBUtils
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    Connection connection = DBUtils.getConnection();
    ...
    Une autre utilisation pour une propriété d'une classe serait liée au partage de la valeur quelque soit la classe, sans avoir à passer une référence de l'instance d'un objet.
    Bref, il y a de nombreuses utilisations possible.
    La seule chose à comprendre, c'est que ce qui est déclaré static est lié à la classe pour UNE JVM (dans le cadre d'une application multi-tiers, inutile de croire qu'on partagera quoi que ce soit entre 2 serveurs comme ça)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    La seule chose à comprendre, c'est que ce qui est déclaré static est lié à la classe pour UNE JVM (dans le cadre d'une application multi-tiers, inutile de croire qu'on partagera quoi que ce soit entre 2 serveurs comme ça)
    Je me permet de préciser: c'est lié à 1 classloader! Si dans un jvm la classe est chargée par deux classloader séparé, elles auront chacun leur lot de données statiques Exemple typique, une librairie identique utilisé par deux application différente dans un serveur java enterprise, chaque application aura sa version de la librairie et donc son lot de données statiques

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Je me permet de préciser: c'est lié à 1 classloader! Si dans un jvm la classe est chargée par deux classloader séparé, elles auront chacun leur lot de données statiques Exemple typique, une librairie identique utilisé par deux application différente dans un serveur java enterprise, chaque application aura sa version de la librairie et donc son lot de données statiques
    +1
    Effectivement, je voulais faire simple
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    +1
    Effectivement, je voulais faire simple
    C'est toujours un plaisir d'embrouiller derrière toi

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    C'est toujours un plaisir d'embrouiller derrière toi
    Ils vont te maudire
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est comme les maladies, maudit une fois t'es immunisé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Méthodes static vs classe Singleton
    Par lvr dans le forum Général Java
    Réponses: 18
    Dernier message: 12/09/2011, 09h55
  2. Réponses: 9
    Dernier message: 12/04/2007, 17h08
  3. [FLASH MX2004] [AS2] Classe méthodes static
    Par bolo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 16/12/2004, 18h26
  4. [debutant] Méthode static
    Par iago dans le forum Langage
    Réponses: 12
    Dernier message: 25/11/2004, 17h09
  5. thread et méthodes static
    Par sylpichard dans le forum MFC
    Réponses: 3
    Dernier message: 02/06/2004, 17h12

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