/////////////////////////////////////////////////////////////// // factory.cpp - implements AbstractFactory // // // // Jim Fawcett, CSE791 - Design Patterns, Summer 2002 // /////////////////////////////////////////////////////////////// #include #include "factory.h" #include "product.h" using namespace std; const AbstractFactory* AbstractFactory::CreateFactory(AbstractFactory::factoryType ft) { switch(ft) { case 1 : return new ConcreteFactory1; case 2 : 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; }