#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
//抽象类,用来安排创建人的具体流程,其他类必须遵循这个流程,但是可以自己具体实现
class CPersonBuilder
{
public:
virtual void BuildHead()=0;
virtual void BuildBody()=0;
virtual void BuildArmLeft()=0;
virtual void BuildArmRight()=0;
virtual void BuildLegLeft()=0;
virtual void BuildLegRight()=0;
};
//创建瘦子的类
class CThinPersonBuilder:public CPersonBuilder
{
public:
CThinPersonBuilder()
{
cout<<"is creating thin person "<<endl<<endl;
}
~CThinPersonBuilder()
{
cout<<"is finished for thin person"<<endl<<endl;
}
public:
void BuildHead()
{
cout<<"BuildHead"<<endl;
}
void BuildBody()
{
cout<<"BuildBody(thin)"<<endl;
}
void BuildArmLeft()
{
cout<<"BuildArmLeft"<<endl;
}
void BuildArmRight()
{
cout<<"BuildArmRight"<<endl;
}
void BuildLegLeft()
{
cout<<"BuildLegLeft"<<endl;
}
void BuildLegRight()
{
cout<<"BuildLegRight"<<endl;
}
};
//创建胖子的类
class CFatPersonBuilder:public CPersonBuilder
{
public:
CFatPersonBuilder()
{
cout<<"is creating fat person"<<endl;
}
~CFatPersonBuilder()
{
cout<<"is finished for fat person"<<endl;
}
public:
void BuildHead()
{
cout<<"BuildHead"<<endl;
}
void BuildBody()
{
cout<<"BuildBody(Fat)"<<endl;
}
void BuildArmLeft()
{
cout<<"BuildArmLeft"<<endl;
}
void BuildArmRight()
{
cout<<"BuildArmRight"<<endl;
}
void BuildLegLeft()
{
cout<<"BuildLegLeft"<<endl;
}
void BuildLegRight()
{
cout<<"BuildLegRight"<<endl;
}
};
//指挥者类,用来指挥创建的人是瘦子还是胖子
class CPersonDirector
{
public:
CPersonDirector(CPersonBuilder *p)
{
this->m_p=p;
}
const void CreatePerson(void) const
{
m_p->BuildHead();
m_p->BuildBody();
m_p->BuildArmLeft();
m_p->BuildArmRight();
m_p->BuildLegLeft();
m_p->BuildLegRight();
}
private:
CPersonBuilder *m_p;
};
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"---------建造者模式测试案例------------------------"<<endl<<endl;
CThinPersonBuilder *p_tp=new CThinPersonBuilder();
CPersonDirector *p_dtp=new CPersonDirector(p_tp);
p_dtp->CreatePerson();
delete p_tp;
delete p_dtp;
p_tp=NULL;
p_dtp=NULL;
cout<<endl<<endl;
CFatPersonBuilder *p_fp=new CFatPersonBuilder();
CPersonDirector *p_dfp=new CPersonDirector(p_fp);
p_dfp->CreatePerson();
delete p_fp;
delete p_dfp;
p_fp=NULL;
p_dfp=NULL;
system("pause");
return 0;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有