Design PAttern Factory
-
hallo, hab eine kleine frage,
kann mir wer ein ausprogrammiertes, kleiens BSP mit dem Design Pattern FActory schicken?
ich bräcuhte es um jeweils zwei andere Objekte zu erstellendanke
-
-
Das Entwurfsmuster Abstrakte Fabrik ist für die Erstellung verschiedener Gruppen von Produkten gedacht. Hier ein Beispiel:
#include <iostream> #include <string> class AutoFabrik { public: virtual ~AutoFabrik(){} virtual std::string erstelleKarosserie() const = 0; virtual std::string erstelleMotor() const = 0; }; class OpelFabrik : public AutoFabrik { public: virtual ~OpelFabrik(){} virtual std::string erstelleKarosserie() const { return "Opel Karosserie"; } virtual std::string erstelleMotor() const { return "Opel Motor"; } }; class AudiFabrik : public AutoFabrik { public: virtual ~AudiFabrik(){} virtual std::string erstelleKarosserie() const { return "Audi Karosserie"; } virtual std::string erstelleMotor() const { return "Audi Motor"; } }; void fabrikation(const AutoFabrik &fabrik) { std::cout << fabrik.erstelleMotor() << "\n"; std::cout << fabrik.erstelleKarosserie() << std::endl; } int main() { fabrikation(OpelFabrik()); fabrikation(AudiFabrik()); }
-
nennt man das beispiel zuvor nicht Factory method?
eine Abstract Factiory ist doch eher folgende code? kann man das beispiel noch verbessern?
// This is the AbstractProduct class Car { public: virtual void DisplayModel () = 0; }; // This is a ConcreteProduct class Maruthi : public Car { public: virtual void DisplayModel () { cout << "Maruthi" << endl; } }; // This is another ConcreteProduct class Ferrari : public Car { public: virtual void DisplayModel () { cout << "Ferrari" << endl; } }; // This is the AbstractCreator class CarFactory { public: // This is the abstract declaration of the Factory Method. virtual Car* CreateCar () = 0; } // This is a ConcreteCreator class MaruthiFactory { public: // This is a Concrete definition of the Factory Method virtual Car* CreateCar () { return new Maruthi(); } }; // This is a ConcreteCreator class FerrariFactory { public: // This is a Concrete definition of the Factory Method virtual Car* CreateCar () { return new Ferrari(); } }; int main (void) { Car *c1, *c2; CarFactory *cf1, *cf2; cf1 = new MaruthiFactory (); cf2 = new FerrariFactory (); c1 = cf1->CreateCar (); c2 = cf2->CreateCar (); c1->DisplayModel (); // Displays "Maruthi" c2->DisplayModel (); // Displays "Ferrari" }