#define win 0 #define mac 1 #include <iostream> using namespace std; class button { public: button(){} virtual ~button(){} virtual void showbutton()=0; }; class winbutton : public button { public: winbutton(){} virtual ~winbutton(){} void showbutton(){cout<<"win button"<<endl;} }; class macbutton : public button { public: macbutton(){} virtual ~macbutton(){} void showbutton(){cout<<"mac button"<<endl;} }; class factory { public: factory(){} virtual ~factory(){} virtual button *createbutton()=0; }; class winfactory : public factory { public: winfactory(){} virtual ~winfactory(){} button *createbutton(){return new winbutton;} }; class macfactory : public factory { public: macfactory(){} virtual ~macfactory(){} button *createbutton(){return new macbutton;} }; int main() { factory *fc=new winfactory; button *bt=fc->createbutton(); bt->showbutton(); delete bt; delete fc; fc=new macfactory; bt=fc->createbutton(); bt->showbutton(); delete bt; delete fc; system("pause"); return 0; }