L'usine de la méthode de la mise en œuvre - C++

J'ai le code suivant pour "l'usine" modèle de conception de la mise en œuvre.

class Pen{
public:
     virtual void Draw() = 0;
};

class RedPen : public Pen{
public:
     virtual void Draw(){
         cout << "Drawing with red pen" << endl;
     }
};

class BluePen : public Pen{
public:
     virtual void Draw(){
         cout << "Drawing with blue pen" << endl;
     }
};

auto_ptr<Pen> createPen(const std::string color){
     if(color == "red")
         return auto_ptr<Pen>(new RedPen);
     else if(color == "blue")
         return auto_ptr<Pen>(new BluePen);
}

Mais j'ai entendu qu'il peut être fait dans une meilleure façon, à l'aide de "modèles C++". Quelqu'un peut-il aider à comment il est fait et comment le modèle de l'approche est mieux que cela?

Toutes les pensées

OriginalL'auteur Navaneeth K N | 2009-01-04