Factory Pattern (c + + implementation)
/*product.h*/#ifndef product_h#define product_hclass product{public:virtual ~product () =0;protected:product (); Private:};class concreteproduct:public product{public:~concreteproduct (); Concreteproduct ();p rotected:private:}; #endif
/*product.cpp*/#include "Product.h" #include <iostream>product::P roduct () {}product::~product () {} Concreteproduct::concreteproduct () {std::cout<< "concreteproduct ..." <<STD::ENDL; Concreteproduct::~concreteproduct () {}
/*factory.h*/#ifndef factory_h#define factory_hclass product;class factory{public:virtual ~Factory () =0;virtual Product *createproduct () =0;protected:factory ();p rivate:};class concretefactory:public factory{public;~ Concretefactory (); Concretefactory (); Product *createproduct ();p rotected:private:}; #endif
/*factory.cpp*/#include "Factory.h" #include "Product.h" #include <iostream>factory::factory () {}factory::~ Factory () {}concretefactory::concretefactory () {std::cout<< "concretefactory ..." <<STD::ENDL;} Concretefactory::~concretefactory () {}product *concretefactory::createproduct () {return new concreteproduct ();
/*main.cpp*/#include "Factory.h" #include "Product.h" #include <iostream>int main () {Factory *fac=new Concretefactory (); Product *p=fac->createproduct (); return 0;}
Factory pattern (Factory mode)