Ne pouvoir instancier une classe qu'une seule fois [Résolu]

Messages postés
24
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
5 mai 2009
- - Dernière réponse : abderrahman86
Messages postés
24
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
5 mai 2009
- 20 avril 2009 à 17:43
Bonjour ,



On est en train de développer une application Windows en java dont j’ai crée une classe qui nous permettrons la gestion d’accès aux images.



Ma question c’est comment faire pour n’instancier cette classe qu’une seule fois ?



J’ai googlé et j’ai trouvé qu’il faut utiliser le Desing Pattern Singleton.




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>



Voici le code de ma classe:








public








class


maClasse{
      






public







static







final


String



IMAGE_AJOUTER


=


"/ajouter.png"

;

}

instanciation de ma classe:


addButton.setIcon(
new ImageIcon(getClass().getResource(maClasse.
IMAGE_AJOUTER)));

Cordialement
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
24
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
5 mai 2009
3
Merci
bonjour
voci la solution qu'on implimenté:

private
static Map<String, ImageIcon>
imgIc;





public







static


ImageIcon img(String image) {















if


(



imgIc






null


) {




imgIc


=



new


HashMap<String, ImageIcon>();}

ImageIcon imgi=




imgIconsMap


.get(image);




if


(imgi==



null


) {imgi=




new


ImageIcon(maClasse.



class


.getResource(image));




imgIc


.put(image, imgi);}




return







imgi


;}

instanciation de maClasse:

bouton

.setIcon(maClasse.img(maClasse.
IMAGE_AJOUTER
));

Merci bcp  DARKSIDIOUS.



 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 131 internautes nous ont dit merci ce mois-ci

Commenter la réponse de abderrahman86
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
78
0
Merci
Salut,

Ce que tu fais là n'a rien d'un singleton il s'agit juste de déclarer une constante publique !

Voici un singleton :

public class Singleton() {

protected static instance;

private Singleton() {
}

public static Singleton getInstance() {

if (instance == null) {
instance = new Singleton();
}
return Singleton;

}

}

Et pour "instancier" ta classe :
Singleton classeUnique = Singleton.getInstance();

Et pour tester :
Singleton classeUnique2 = Singleton.getInstance();
System.out.println(classeUnique == classeUnique2); // les deux objets pointent sur la même instance de classe.
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
24
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
5 mai 2009
0
Merci
Salut,



Merci pour la réponse 



Oui moi je n’ai pas utilisé le Singleton.



Le problème se pose dans ce bout de code



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

 addButton.setIcon(
new ImageIcon(getClass().getResource(maClasse.
IMAGE_AJOUTER)));






Il est utilisé dans pas mal de classe, a cahque fois en crée un new ImageIcon(getClass().getResource(maClasse.IMAGE_AJOUTER
)).



Est qu’il y a une solution ?




 
Commenter la réponse de abderrahman86
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
78
0
Merci
Et bien avec ta solution de l'image stockée en constante :
Au lieu de :
public class maClasse{
public static final String IMAGE_AJOUTER = "/ajouter.png" ;
}

fais :
public class maClasse{
public static final Image IMAGE_AJOUTER = new ImageIcon(getClass().getResource(maClasse.IMAGE_AJOUTER));
}

addButton.setIcon(maClasse.IMAGE_AJOUTER);
Commenter la réponse de cs_DARKSIDIOUS