#include <iostream> using namespace std; class buildcomputer { public: buildcomputer(){} virtual ~buildcomputer(){} virtual void buildmouse()=0; virtual void buildmointor()=0; virtual void buildkeyboard()=0; virtual void buildhost()=0; }; class winbuildcomputer : public buildcomputer { public: winbuildcomputer(){} virtual ~winbuildcomputer(){} void buildmouse(){cout<<"build win mouse"<<endl;} void buildmointor(){cout<<"build win mointor"<<endl;} void buildkeyboard(){cout<<"build win keyboard"<<endl;} void buildhost(){cout<<"build win host"<<endl;} }; class macbuildcomputer : public buildcomputer { public: macbuildcomputer(){} virtual ~macbuildcomputer(){} void buildmouse(){cout<<"build mac mouse"<<endl;} void buildmointor(){cout<<"build mac mointor"<<endl;} void buildkeyboard(){cout<<"build mac keyboard"<<endl;} void buildhost(){cout<<"build mac host"<<endl;} }; class director { private: buildcomputer *instance; public: director(buildcomputer *bd) :instance(bd){} virtual ~director(){} void creator() { instance->buildmouse(); instance->buildmointor(); instance->buildkeyboard(); instance->buildhost(); } }; int main() { buildcomputer *p=new macbuildcomputer; director *dc=new director(p); dc->creator(); delete dc; delete p; p=new winbuildcomputer; dc=new director(p); dc->creator(); delete dc; delete p; system("pause"); return 0; }