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 :

Compréhension Pattern Factory Method


Sujet :

Design Patterns

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Compréhension Pattern Factory Method
    Bonsoir,

    Il y a quelque chose que je ne saisis pas complètement. J'essaie de comprendre ce pattern mais rien n'y fait ..

    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
    class Createur
    {
        public :
        virtual std::string getMarque() const=0;
        friend std::ostream &operator<<(std::ostream &o,const Createur *v)
        {
            return o << v->getMarque();
        }
        static Createur *createVoiture(std::string o);
    };
            
            
            class CreateurConcretRenault : public Createur {
            public:
                std::string getMarque() const { return "Renault"; }
            };
            
            class CreateurConcretFiat : public Createur {
            public:
                std::string getMarque() const { return "Fiat"; }
            };
    
    void f(const Createur *v)
            { std::cout << "Voiture " << v << std::endl; }
            
            Createur *Createur::createVoiture(std::string o)
            {
                if(o=="fr") return new CreateurConcretRenault();
                if(o=="it") return new CreateurConcretFiat();
                return 0;
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        int main()
        {
            Createur *v=Createur::createVoiture("it");
            f(v);
        
        return 0;}
    1) En quoi dans ce code peut-on dire que la méthode createVoiture est une méthode de Fabrication ?
    Serait-ce parce que on ne créer pas directement l'objet à partir d'un new mais à partir d'une méthode qui s'occupe de cela ?

    2)Son utilisé, c'est donc pour être " plus efficace " ?

    3)D'ailleurs dans le main , si on regarde bien , on ne voit plus le type concret ( on ne fait pas de new concret , du genre newRenaut,newFiat ) , serait-ce la raison ? Faire en sorte que le type concret n'apparait pas dans le main ?

    4) Derniere question : J'ai vu que certains disaient que les méthodes statiques n'étaient pas un bon choix , et qu'il préférait créer un objet puis appliquer la méthode à cette instance. Mais comment faire cela sachant qu'on ne peut pas instancier une classe abstraite en c++ ?
    Dernière modification par Invité ; 27/07/2013 à 01h29.

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

Discussions similaires

  1. [Fabrique] [Java] Design Pattern Factory
    Par SkyBioSS dans le forum Design Patterns
    Réponses: 3
    Dernier message: 24/05/2006, 14h53
  2. Réponses: 11
    Dernier message: 03/05/2006, 15h12
  3. Spring et factory-method
    Par dehbi dans le forum Spring
    Réponses: 3
    Dernier message: 31/03/2006, 16h00
  4. factory method
    Par mencaglia dans le forum C++
    Réponses: 2
    Dernier message: 31/01/2006, 09h02
  5. [GOF] Abstract Factory vs Factory Method
    Par Greybird dans le forum Design Patterns
    Réponses: 3
    Dernier message: 10/06/2005, 22h42

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