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 :

Comment s'appelle ce pattern ? (multi-singleton ?)


Sujet :

Design Patterns

  1. #1
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut Comment s'appelle ce pattern ? (multi-singleton ?)
    Bonjour,
    je m'aperçois que dans une application j'aurais besoin de stocker des instances liées à plusieurs objets uniques. Le but étant de créer des fenêtres graphiques d'édition pour des objets, mais une seule maximum par objet.
    Voici en gros comment je pensais procéder :

    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
    28
    29
    30
    31
    32
    33
    34
    class Windows {
    
    	static List instances;
    
    	static Object getInstance(Object object) {
    		Window window = null;
    		for (int i = 0; i < Windows.instances.size() && window == null; i++) {
    			if(Windows.instances.get(i).getObject() == object)	{
    				window = Windows.instances.get(i);
    			}
    		}
    		if(window == null) {
    			window = new Window(object);
    		}
    		return window;		
    	}
    
    	static void killInstance(Object object) {
    	...
    	}
    }
    
    
    class Window {
    	Object object;
    
    	Window(Object object) {
    		this.object = object;
    	}
    
    	Object getObject() {
    		return this.object;
    	}
    }
    En fait par curiosité, quelqu'un pourrait-il me dire s'il y a un nom pour ce pattern ? Je pensais au Pool mais c'est différent, c'est à mi-chemin entre le Singleton et le Pool.
    Merci d'avance.
    Vive les roues en pierre

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Ma foi, tel que je le vois, vous avez en fait, par la méthode statique Window getInstance(Object), défini une fonction "globale", qui n'est pas un membre d'instance du type [B]Windows[B] (puisque statique) qui retourne une Window unique, certes, mais que l'utilisateur va choisir/sélectionner à partir d'une "clé" d'accès, à savoir : l' object passé en paramètre à getInstance.

    En clair, je ne suis pas sûr que ce soit réellement un pattern de conception au sens où on l'entend généralement.

    Mais si on veut absolument lui donner un nom, je dirais probablement quelque chose comme :

    "singleton de dictionnaire", le "dictionnaire" étant en l'espèce la donnée de cette méthode Window getInstance(Object) accessible globalement.

    En formulation "mathématique" :

    Windows.getInstance : Object -> Window

    Le fait que getInstance soit statique sur Windows fait du dictionnaire le "singleton" en quelque sorte. Mais le nommage est à peine satisfaisant : car en général, on convient d'appeler par "singleton" une instance unique d'une classe, ce qui n'est pas le cas ici.

    Conclusion : je choisirai plus exactement, et encore plus simplement, "dictionnaire global" (d'instances de Window, dont les clés sont des instances d' Object) plutôt que "singleton de dictionnaire".

    My 2 cents.

    Citation Envoyé par Djakisback Voir le message
    Bonjour,
    je m'aperçois que dans une application j'aurais besoin de stocker des instances liées à plusieurs objets uniques. Le but étant de créer des fenêtres graphiques d'édition pour des objets, mais une seule maximum par objet.
    Voici en gros comment je pensais procéder :

    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
    28
    29
    30
    31
    32
    33
    34
    class Windows {
    
    	static List instances;
    
    	static Object getInstance(Object object) {
    		Window window = null;
    		for (int i = 0; i < Windows.instances.size() && window == null; i++) {
    			if(Windows.instances.get(i).getObject() == object)	{
    				window = Windows.instances.get(i);
    			}
    		}
    		if(window == null) {
    			window = new Window(object);
    		}
    		return window;		
    	}
    
    	static void killInstance(Object object) {
    	...
    	}
    }
    
    
    class Window {
    	Object object;
    
    	Window(Object object) {
    		this.object = object;
    	}
    
    	Object getObject() {
    		return this.object;
    	}
    }
    En fait par curiosité, quelqu'un pourrait-il me dire s'il y a un nom pour ce pattern ? Je pensais au Pool mais c'est différent, c'est à mi-chemin entre le Singleton et le Pool.
    Merci d'avance.

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    merci pour la réponse. Sinon en fait c'est un peu un Pool de Singletons.
    Vive les roues en pierre

  4. #4
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    ça correspond parfaitement à un pool d'objets.

  5. #5
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Ah bon ? faut que je revois le Pool alors ^^, il me semblait que c'était géré différemment, merci pour ta réponse.
    Vive les roues en pierre

  6. #6
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Salut

    Pour moi ce n'est pas un pool.

    Ce que tu as fais ressemble plus à un Registry. Mais bon, pas la peine de poser un pattern sur chaque classe que tu développes, hein ?

    Un Objet issue d'un pool d'objet est utilisé par un seul client à la fois (notions de "lock/release"). Alors que dans ton cas, un objet Window peut être utilisé par plusieurs clients à la fois !

    Après, c'est ceratinement juste une nuance dans les interprétations possibles

    Yann

Discussions similaires

  1. [debutant] [PHP-JS] Comment faire appel a du javaScript dans du php
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/04/2006, 16h19
  2. Comment s'appelle la "zone privée"?
    Par wolflinger dans le forum Général Conception Web
    Réponses: 8
    Dernier message: 23/03/2006, 23h40
  3. [Design Pattern]Précision singleton
    Par laurent_ifips dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 21/03/2006, 22h12
  4. Réponses: 14
    Dernier message: 02/02/2006, 18h32
  5. Comment l'appel à une méthode virtuelle....
    Par Blobette dans le forum C++
    Réponses: 7
    Dernier message: 07/12/2004, 13h55

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