///////////////////////////////////////////////////////////////////// // client.cpp -- uses AbstractFactory to create products // // // // Jim Fawcett, CSE791 - Design Patterns, Summer 2002 // ///////////////////////////////////////////////////////////////////// // ver 1.1 - added static creational function in AbstractLayer // // so client can use the abstract interface // // ver 2.0 - separated abstract interfaces from concrete classes // ///////////////////////////////////////////////////////////////////// #include #include "AbstractFactory.h" #include "AbstractProduct.h" using namespace std; void main( ) { cout << "\n Demonstrating Abstract Factory Pattern " << "\n ========================================\n"; // create concrete factory 1, creata product A, use it const AbstractFactory *pCF1 = AbstractFactory::CreateFactory(1); AbstractProductA *pAPA = pCF1->CreateProdA(); pAPA -> show(); // creata product B, use it AbstractProductB *pAPB = pCF1->CreateProdB(); pAPB -> show(); delete const_cast(pCF1); delete pAPA; delete pAPB; // create concrete factory 2, creata product A, use it const AbstractFactory *pCF2 = AbstractFactory::CreateFactory(2); pAPA = pCF2->CreateProdA(); pAPA -> show(); // create product B, use it pAPB = pCF2->CreateProdB(); pAPB -> show(); delete const_cast(pCF2); delete pAPA; delete pAPB; cout << "\n\n"; }