// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
//#include "Factory.h"
using namespace std;
class Man
{
public:
Man():flag(false) {}
void BuildHead() {cout<<"Head is building"<<endl;}
void BuildBody()
{
flag = true;//body is finished,so man is OK;
cout<<"Body is building"<<endl;
}
void ShowResult()
{
if(flag)
{
cout<<"Man was OK"<<endl;
}
else
{
cout<<"Man was not OK"<<endl;
}
}
private:
bool flag;
};
class Builder
{
public:
virtual void BuildHead() = 0;
virtual void BuildBody() = 0;
virtual Man* GetMan() const = 0;
};
class ChineseBuilder:public Builder
{
private:
Man* m_pMan;
public:
ChineseBuilder():m_pMan(new Man()) {}
void BuildHead() {m_pMan->BuildHead();}
void BuildBody() {m_pMan->BuildBody();}
Man* GetMan() const {return m_pMan;}
};
class Director
{
public:
Director(Builder* pMan) {m_pMan = pMan;}
void CreateMan()
{
if(NULL != m_pMan)
{
m_pMan->BuildHead();
m_pMan->BuildBody();
}
}
private:
Builder* m_pMan;
};
int _tmain(int argc, _TCHAR* argv[])
{
// you need to build a man ,and you he must be Chinese.
Builder* pBuilder = new ChineseBuilder();
// OK,we know you need to build a Chinese man.
Director* pDirector = new Director(pBuilder);
// begin to build a man .
pDirector->CreateMan();
Man* pMan = pBuilder->GetMan();
// check whether we have built the Chinese succeed.
pMan->ShowResult();
getchar();
return 0;
}
c++建造者模式
最新推荐文章于 2024-03-12 09:28:06 发布