#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 text{public: text(){} virtual ~text(){} virtual void showtext()=0;};class wintext : public text{public: wintext(){} virtual ~wintext(){} void showtext(){cout<<"win text"<<endl;}};class mactext : public text{public: mactext(){} virtual ~mactext(){} void showtext(){cout<<"mac text"<<endl;}};class abstractfactory{public: abstractfactory(){} virtual ~abstractfactory(){} virtual button *createbutton()=0; virtual text *createtext()=0;};class winfactory : public abstractfactory{public: winfactory(){} virtual ~winfactory(){} button *createbutton(){return new winbutton;} text *createtext(){return new wintext;}};class macfactory : public abstractfactory{public: macfactory(){} virtual ~macfactory(){} button *createbutton(){return new macbutton;} text *createtext(){return new mactext;}};int main(){ abstractfactory *fc=new winfactory; button *bt=fc->createbutton(); text *tx=fc->createtext(); bt->showbutton(); tx->showtext(); delete bt; delete tx; delete fc; fc=new macfactory; bt=fc->createbutton(); tx=fc->createtext(); bt->showbutton(); tx->showtext(); delete bt; delete tx; delete fc; system("pause"); return 0;}