#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;
}
原文链接: https://www.cnblogs.com/tiandsp/archive/2012/06/24/2560285.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/53349
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!