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 :

Design Pattern : Creation contrôlée d'instances [GOF]


Sujet :

Design Patterns

  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut Design Pattern : Creation contrôlée d'instances
    Bonjour,

    je cherche le nom d'un design pattern, qui je crois, existe :

    MaClasse possède un constructeur privé pour contrôler sa création.

    Elle possède une méthode GetInstance( int code ) qui, selon le code donné, va chercher si une instance est disponible et la renvoie, ou en crée une nouvelle et la renvoie.

    J'ai aussi une méthode ReleaseInstance( int code ) pour savoir lorsque l'instance n'est plus utilisée.

    Merci !

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Citation Envoyé par NiamorH
    je cherche le nom d'un design pattern [...]
    Singleton.

    Ps : Il y a un forum dédié aux Design Patterns sur developpez. J'y déplace la question.

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Je me suis mal exprimé. Je ne fais pas un Singleton même si l'idée est très proche.

    J'ai une liste d'instances de MaClasse auquelles j'accède via un code associé. Une std::map<int, MaClasse*> quoi...

    Lorsque je fais GetInstance( 5 ), je regarde si il existe une instance dans la map avec un code 5. Si oui je la renvoie, sinon je la créée.

    En fait celà peut peut-être être considéré comme un Singleton, je ne sais pas...

    Désolé pour le post au mauvais endroit.

  4. #4
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Il s'agirai plutôt d'un Cache.

    En réalité, cela peut se traduire par une Factory qui gère une collection d'instance, ou par un Proxy, qui s'appuie soit sur une factory si besoin, soit sur des Singleton, soit ce Proxy gère lui même les instances.
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  5. #5
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    Dsl . Qd j'ai vu constructeur privé + getInstance, Singleton m'a paru évident comme réponse.
    Avec tes précisions je dirais que ça ressemble plus à une Fabrique Abstraite.
    (AbstractFactory).

    @Hed62. Cache je ne connais pas. Tu peux en dire 2 mots ?

  6. #6
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Mes excuses, la majuscule est en trop, je parlais d'un cache tout bête, pas d'un DP.
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  7. #7
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Citation Envoyé par hed62
    je parlais d'un cache tout bête, pas d'un DP.
    ça fait 10 mn que je me tape des liens google à la c...

  8. #8
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Ca me semble être une sorte de factory également mais pas une Abstract Factory non plus, car cette derniere se base sur une classe mère abstraite qui renvoie les produits dérivés instanciés par une classe fille concrète.

    L'Abstract Factory répond au besoin : "Je veux créer des objets concrets sans savoir exactement le type exact de ce que ma factory va me renvoyer. Je ne manipule que des bases."

    Mon besoin est : "Je veux limiter la création d'instances d'un objet à une unique instance pour chaque code passé à ma méthode GetInstance. Le type d'objet retourné est bien connu. Chaque instance est initialisée en fonction du code donné."

    C'est une sorte de liste ouverte de singletons auquels on accède via une factory. Je ne crois pas que ce DP existe finalement...

  9. #9
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Non effectivement il n'existe pas.. S'il existait il s'appelerai Cache ( spéciale dédicace à TheLeadingEdge ) et serait la combinaison de Factory et Singleton je dirai...
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Il y a le MultiTon (qui n'est pas du gof) qui assure d'avoir une Instance unique en fonction d'une clef : on y accède donc avec un GetInstance( <type> key ).
    (les instances sont stockés dans une HashTable)

    Lors du GetInstance, si la clef n'existe pas dans la table, tu peux alors appeler une factory charger d'instancier un MultiTon par rapport à la clef fournie, et composé de ton objet (et de la clef?). Puis tu l'ajoutes à ta HashTable avec la clef.

    (si j'ai bien compris ton besoin)

  11. #11
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Ouais ça résume bien ce que j'ai fait : http://en.wikipedia.org/wiki/Multiton_pattern

    Multiton, pas très joli nom mais c'est exactement ça.

    Merci.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. [VS.NET] Les design pattern et DOTNET
    Par Nycos62 dans le forum Visual Studio
    Réponses: 4
    Dernier message: 22/10/2004, 14h44
  3. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 22h35
  4. Les Designs Patterns Entreprise
    Par boulon dans le forum Design Patterns
    Réponses: 4
    Dernier message: 01/09/2004, 19h16
  5. [Design Patterns] Architecture 3 tiers
    Par HPJ dans le forum Design Patterns
    Réponses: 1
    Dernier message: 29/07/2003, 11h49

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