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 :

Partager une instance de classe dans toutes les classes d'un projet


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut Partager une instance de classe dans toutes les classes d'un projet
    Bonjour à tous,

    J'ai créé une classe Log pour écrire dans un fichier les évènements d'une application.
    Je voudrais que l'instance de la classe soit partagée par toutes les classes du projet. En clair, je ne voudrais pas instancier autant de fois la classe Log qu'il n'y a de classe dans le projet.

    Cela poserait certainement un problème car le fichier serait ouvert plusieurs fois.
    Est-ce le rôle du mot clé static ?

    Merci

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Le design pattern singleton est fait pour toi


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par bart64
    Bonjour à tous,

    J'ai créé une classe Log pour écrire dans un fichier les évènements d'une application.
    Je voudrais que l'instance de la classe soit partagée par toutes les classes du projet. En clair, je ne voudrais pas instancier autant de fois la classe Log qu'il n'y a de classe dans le projet.

    Cela poserait certainement un problème car le fichier serait ouvert plusieurs fois.
    Est-ce le rôle du mot clé static ?

    Merci
    DesignPattern Singleton (un peu modifié pour éviter les problèmes multithreads):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Log {
        private static final Log instance = new Log();
        private Log() {
            ...
        }
        public static Log getLog() {
            return instance;
        }
    }
    À part ça, je pense que tu n'as pas besoin de créer une telle classe, car il y a déjà java.util.logging.Logger :-)

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    pour reprendre la philosophie des Logger standard il serait plus sage d'avoir une instance de Logger par package.
    De manière assez systématique j'utilise une classe comme celle-là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class PackCst { // classe non publique!
          final static Logger CURLOG = Logger.getLogger("maboite.monpackage") ;
          // autres constantes et initialisations propres au package
    }
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut
    Merci à tous,

    C'est effectivement exactement ce que je cherchais !

  6. #6
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

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

Discussions similaires

  1. Obtenir une ligne de résultat dans tout les cas
    Par Apo94 dans le forum Développement
    Réponses: 5
    Dernier message: 02/02/2011, 12h06
  2. Réponses: 4
    Dernier message: 12/08/2009, 21h54
  3. Recherche d'un terme dans toute les class du projet
    Par aristeas dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 30/06/2007, 21h20
  4. rendre accessible une variable dans toutes les classes
    Par sony351 dans le forum C++Builder
    Réponses: 5
    Dernier message: 24/03/2007, 01h15
  5. Réponses: 2
    Dernier message: 17/06/2005, 23h03

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