/////////////////////////////////////////////////////////////// // factory.cpp - implements ConcreteFactories // // // // Jim Fawcett, CSE776 - Design Patterns, Summer 2004 // /////////////////////////////////////////////////////////////// #include #include "factory.h" #include "product.h" using namespace std; const AbstractFactory* AbstractFactory::CreateFactory(AbstractFactory::factoryType ft) { switch(ft) { case one : return new ConcreteFactory1; case two : return new ConcreteFactory2; default : return NULL; } } AbstractProductA* ConcreteFactory1::CreateProdA() const { cout << "\n Factory #1 creating Product A"; return new ConcreteProductA1; } AbstractProductB* ConcreteFactory1::CreateProdB() const { cout << "\n Factory #1 creating Product B"; return new ConcreteProductB1; } AbstractProductA* ConcreteFactory2::CreateProdA() const { cout << "\n Factory #2 creating Product A"; return new ConcreteProductA2; } AbstractProductB* ConcreteFactory2::CreateProdB() const { cout << "\n Factory #2 creating Product B"; return new ConcreteProductB2; }