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

Design Patterns Discussion :

[Java]singleton [Singleton]


Sujet :

Design Patterns

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut [Java]singleton
    Bonjour,
    J'ai une classe qui contient une dizaine de méthodes (principalement des méthodes qui exécutent des commandes système). Ces méthodes sont appellées régulièrement par beaucoup d'autre classes.
    Pour obtenir une instance facilement de cette classe, j'ai décidé de faire un singleton donc j'effectue des appels au méthodes comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse.getInstance().maMéthode()
    Mais j'aurais très bien pu mettre toutes mes méthodes en static et faire des appels comme ca :
    Question : Savez vous si il y a une différence entre les deux solutions ? ou si une solution est mieux que l'autre (niveau performance par exemple...) (il y a peut etre un cours qui existe car personnellement c'est un problème qui revient souvent) ... merci

  2. #2
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Points : 116
    Points
    116
    Par défaut
    Oué c une trés bonne question, la seule différence que je vois c'est que dans le cas du Singleton tu n'instancies pas d'objet car le constructeur est 'private" mais dans le second cas il faut instancié un objet avant d'utiliser ces méthodes. Jsuis pas certain

    En d'autres mots, le singleton c'est pour créer une classe qui n'aura qu une seule instance dans ton programme alors que dans ta 2iéme solutions tu partages des attributs ou méthodes dans plusieurs instance.
    Petit à petit, l'oiseau fait son nid !

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Points : 116
    Points
    116
    Par défaut
    Autre chose, si tu as différentes classes qui utilise des méthodes différentes pourquoi ne pas utilisé une classe abstraite.
    Petit à petit, l'oiseau fait son nid !

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Mais j'aurais très bien pu mettre toutes mes méthodes en static et faire des appels comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse.maMéthode()
    mais dans le second cas il faut instancié un objet avant d'utiliser ces méthodes
    .

    Non puis ses méthode sont statiques dans le 2nd cas.

    Le getInstance() pourrait très bien déférer l'allocation du singleton (histoire de conserver la mémoire) ou même retourner une instance d'une classe-fille (ex: une factory différente suivant la configuration du programme), ....
    Egalement dans certains cas (ex: paramètres stockés dans des map) il vaut mieux manipuler une instance plutot que coder le nom de la classe en dur. Dans d'autre c'est plus simple d'appeler la classe directement (ex: fonction utilitaire dont on sait que l'implémentation sera toujours la même quelque soit l'utilisation - voir SwingUtilities).

    En fait c'est vraiment celon l'archi de ton programme et tes besoins.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    Citation Envoyé par bouye
    Le getInstance() pourrait très bien déférer l'allocation du singleton
    tu veux dire quoi par là?

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par alex'l
    Citation Envoyé par bouye
    Le getInstance() pourrait très bien déférer l'allocation du singleton
    tu veux dire quoi par là?
    Je pense qu'il veut dire par là que tu peux facilement utiliser d'autres implémentations en renvoyant une autre classe...
    Par exemple (avec AnotherSingleton qui hérite de Singleton) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static Singleton getInstance() {
    	if (instance==null) {
    		if ( /* n'importe quel condition */ ) {
    			instance = new AnotherSingleton();
    		} else {
    			instance = new Singleton();
    		}
    	}
    	return instance;
    }
    Ce te permet de facilement changer l'implémentation de ton Singleton sans toucher au code... alors que si tu utilises des méthodes statiques il faudra modifier tout le code pour changer les appels de méthodes...

    De plus le singleton est une classe normale, tu peux donc faire un traitement particulier dans le constructeur (comme lire des fichiers de configuration, etc...) et ainsi avoir des relations entre les méthodes... Alors que les méthodes statiques sont indépendantes...

    a++

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    Citation Envoyé par BRAUKRIS
    Autre chose, si tu as différentes classes qui utilise des méthodes différentes pourquoi ne pas utilisé une classe abstraite.
    Quelle classe serait abstraite? Pour faire quoi?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    Citation Envoyé par adiGuba
    Ce te permet de facilement changer l'implémentation de ton Singleton sans toucher au code...
    C'est vrai que ca peut être interessant. Je n'avais pas vu cet intéret d'utiliser le singleton... merci.

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Lire 'Design Pattern" et "Design Pattern Explained" (les 2 existent en francais, le 2nd offre des exemples Java et C++) tout est très bien expliqué dedans. Il me semble également qu'il y a un bouquin spécifiquement sur les patterns en Java... à moins que ce ne soit un article sur le site de Sun.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  10. #10
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Citation Envoyé par adiGuba
    Ce te permet de facilement changer l'implémentation de ton Singleton sans toucher au code...
    Contre-exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class MaClasse implements MonInterface {
        private static MaClasse singleton;
    
        static {
            singleton = new MaClasse();
        }
    
        public static MonInterface getInstance() {
            return singleton;
        }
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class MaClasse2 extends MaClasse {
        private static MaClasse2 singleton;
    
        static {
            singleton = new MaClasse2();
        }
    
        public static MonInterface getInstance() {
            return singleton;
        }
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonInterface toto = MaClasse.getInstance();//Objet type MaClasse
    MonInterface tata = MaClasse2.getInstance();//Objet type MaClasse2
    Il te faudra donc, si tu veux changer la classe à utiliser, modifier tous les appels à la méthode getInstance() en choisissant la classe concrète à utiliser.

    Une autre solution est au cours de l'initialisation de ton application, créer une instance de ton objet, la placer dans un "registre" et demander par la suite à ce registre de te fournir cette instance unique.
    Cette solution t'offre un offre avantage, ta classe n'a plus à savoir qu'elle a un fonctionnement de singleton et on peut choisir de changer ce comportement sans gros impact sur l'application. Il suffit de configurer le registre pour qu'il fonctionne avec un "prototype" qu'il clone.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MaClasse implements MonInterface {
        ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MaClasse2 extends MaClasse {
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Registre {
        public void add(String cle, Object obj, boolean singleton) {
        ...
        }
    
        public Object get(String cle) {
        ...
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MonInterface toto = new MaClasse();
    registre.add("toto", toto, true);
    MonInterface toto2 = (MonInterface)registre.get("toto");
    System.out.println(toto == toto2);//true
    
    MonInterface titi = new MaClasse2();
    registre.add("titi", titi, false);
    MonInterface titi2 = (MonInterface)registre.get("titi");
    System.out.println(titi == titi2);//false car 2 instances différentes mais avec les mêmes valeurs pour leur différents champs car utilisation d'un prototype
    Si tu utilises un registre plus évolué, tu pourras lire dans un fichier de configuration la classe concrète à utiliser. C'est la démarche adoptée par Spring que j'ai grandement simplifié.

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Moi je verrai plutot ca comme ca dans le cas ou on n'a pas besoin d'initiliaser toutes les classes concrete et ou on a besoin que d'une seule et unique instance de type MonInterface.

    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
    public abstrat class MaClasseAbstraite implements MonInterface { 
        private static MaClasseAbstraite singleton; 
    
        static { 
             if (testSuivantParametreDInitialisation) {
                 singleton = new MaClasseConcrete1(); 
             }
             else {
                 singleton = new MaClasseConcrete2(); 
             }
        } 
    
        public static MonInterface getInstance() { 
            // Voir les divers limitations/avantages de chaque methodes d'instanciantion des singletons dans la FAQ du site.
            return singleton; 
        } 
    ... 
    }
    
    class MaClasseConcrete1 extends MaClasseAbstraite { 
    ...
    }
    
    class MaClasseConcrete2 extends MaClasseAbstraite { 
    ...
    }
    Un exemple débile : tu fais un prog tout simple qui sauve des icones et tu veux juste utiliser une méthode saveImage(File, Image); qui produit une icon dependante de la plateforme surlaquelle l'app tourne sans te préocuper de connaitre les détails inhérents aux divers formats de fichiers et qui marche surquelle platforme. Sous Windows ca te retourne un createur de fichier ICO qui utilisera un encodeur/decodeur que tu auras fait ou récupéré, sous Linux un createur de PNG ou de pixmaps qui utilise ImageIO.

    Un autre exemple peut etre une factory de widget graphiques dont la variante A produit des widget avec des options de debuggage et de trace activee, et la variante B produira les meme widgets sans options de debuggage pour la version finale du programme. Idem avec des widgets ayant des LnF ou apparences differentes (est-ce donc la maniere dont UIManager fonctionne en interne ???). A ce moment-la c'est une variable static à vrai/faux, un fichier de conf/pref ou divers autres manieres qui permettent de determiner quelle type de factory utiliser.

    Le registre peut-etre cependant une maniere interessante de faire.
    Encore une fois le choix de la méthode exacte depend des besoins et de l'archi de l'API ou de l'app.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  12. #12
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Le registre est également plus flexible.
    Comment avec ton exemple changer le comportement et passer d'un mode singleton à une utilisation illimitée ou à un pool d'instances ?
    De plus, si je veux maintenant faire cohabiter un singleton de type MaClasseConcrete1 et un autre de type MaClasseConcrete2, comment faire ?
    Si on est sur de vouloir une et une seule instance, on peut effectivement utiliser le modèle singleton. Par contre, il faut tenir compte des inconvénients en terme de flexibilité (toujours tenir compte des avantages ET inconvénients des patterns).

  13. #13
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    En fait c'est vraiment celon l'archi de ton programme et tes besoins.
    Encore une fois le choix de la méthode exacte depend des besoins et de l'archi de l'API ou de l'app.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par adiGuba
    Salut,

    Citation Envoyé par alex'l
    Citation Envoyé par bouye
    Le getInstance() pourrait très bien déférer l'allocation du singleton
    tu veux dire quoi par là?
    Je pense qu'il veut dire par là que tu peux facilement utiliser d'autres implémentations en renvoyant une autre classe...
    Par exemple (avec AnotherSingleton qui hérite de Singleton) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static Singleton getInstance() {
    	if (instance==null) {
    		if ( /* n'importe quel condition */ ) {
    			instance = new AnotherSingleton();
    		} else {
    			instance = new Singleton();
    		}
    	}
    	return instance;
    }
    Ce te permet de facilement changer l'implémentation de ton Singleton sans toucher au code... alors que si tu utilises des méthodes statiques il faudra modifier tout le code pour changer les appels de méthodes...

    De plus le singleton est une classe normale, tu peux donc faire un traitement particulier dans le constructeur (comme lire des fichiers de configuration, etc...) et ainsi avoir des relations entre les méthodes... Alors que les méthodes statiques sont indépendantes...

    a++

    Salut adiGuba, une question dans ce cas d'utilisation du singleton, il ne faudrait pas mieux utiliser le pattern "Factory" ou encore "Abstract Factory" ??

    Merci

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  15. #15
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    La methode getInstance() d'une classe singleton peut tres bien etre vu comme un appel à une fabrique... et donc de là à l'étendre étendu à une frabriqe abstraitre il n'y a qu'un pas. C'est très rare que les patterns existent seuls* en général ils sont souvent composés entre eux.

    * Le singleton tiré direct texto du bouquin peut très bien être utilisé aussi.
    Il a des limitation mais est plus simple à coder après tout.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  16. #16
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SEMPERE Benjamin
    Salut adiGuba, une question dans ce cas d'utilisation du singleton, il ne faudrait pas mieux utiliser le pattern "Factory" ou encore "Abstract Factory" ??
    Oui en effet c'est un mélange entre le pattern Factory et le pattern Singleton.

    En fait je voulais montrer que le pattern Singleton pouvait évoluer plus facilement que si on utilisait que des méthodes statiques dans tout le code...

    a++

  17. #17
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par adiGuba
    Citation Envoyé par SEMPERE Benjamin
    Salut adiGuba, une question dans ce cas d'utilisation du singleton, il ne faudrait pas mieux utiliser le pattern "Factory" ou encore "Abstract Factory" ??
    Oui en effet c'est un mélange entre le pattern Factory et le pattern Singleton.

    En fait je voulais montrer que le pattern Singleton pouvait évoluer plus facilement que si on utilisait que des méthodes statiques dans tout le code...

    a++
    ok merci

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  18. #18
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bon, au risque que personne ne me lise (perso je ne vais jamais jusqu'au bout des thread-fleuves) je donne mes habitudes :

    1° Je declare un attribut statique si toutes les instances le partagent (je prévois donc d'avoir plusieurs instances)

    2° Je déclare une méthode statique si elle n'a besoin que de ses arguments, de constantes (normal) et d'attributs statiques déjà nécessaires pour le point 1°.

    Si je veux plusieurs méthodes accessibles statiquement, qui ont besoin de variables communes, je fais un singleton. Ca rallonge un peu le code (souvent moins que des noms de methodes/attributs vraiment explicites), mais c'est plus facile à reprendre.

    Je n'ai jamais recouru aux Factory, mais il y a des cas ou ca aurait été justifié. Concevoir ma factory comme un singleton alourdissait les appels et la relecture.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  19. #19
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Moi j'utilise l'injection de dépendances avec Spring, je ne me pose pas ce genre de questions, mon code reste orienté objet et je garde toute la flexibilité dont j'ai besoin.
    Le BeanFactory de Spring est une Factory qui peut me produire des singletons au même titre que des prototypes.

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

Discussions similaires

  1. Jython Java interface et singleton
    Par speedflyer dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2011, 13h55
  2. [enum] Ecrire un singleton en Java 5.0+
    Par palnap dans le forum Langage
    Réponses: 16
    Dernier message: 28/02/2008, 18h52
  3. Réponses: 12
    Dernier message: 13/11/2007, 09h52
  4. [Singleton] [Java] Singleton et héritage
    Par Didier 69 dans le forum Design Patterns
    Réponses: 4
    Dernier message: 13/01/2007, 12h18

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