// Builder.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
/
class Builder
{
public:
Builder(){ }
virtual ~Builder(){}
virtual void BuilderPartA()=0;
virtual void BuilderPartB()=0;
};
class ConcreteBuilder1:public Builder
{
public:
ConcreteBuilder1(){ }
virtual ~ConcreteBuilder1(){}
virtual void BuilderPartA()
{
cout<<"Builder PartA by ConcreteBuilder1"<<endl;
}
virtual void BuilderPartB()
{
cout<<"Builder PartB by ConcreteBuilder2"<<endl;
}
};
class ConcreteBuilder2:public Builder
{
public:
ConcreteBuilder2(){ }
virtual ~ConcreteBuilder2(){}
virtual void BuilderPartA()
{
cout<<"Builder PartA by ConcreteBuilder2"<<endl;
}
virtual void BuilderPartB()
{
cout<<"Builder PartA by ConcreteBuilder2"<<endl;
}
};
/
class Dirctor
{
private:
Builder * m_pBuilder;
public:
Dirctor(Builder * m_p):m_pBuilder(m_p)
{
}
virtual ~Dirctor()
{
delete m_pBuilder;
m_pBuilder=NULL;
}
void Construct()
{
m_pBuilder->BuilderPartA();
m_pBuilder->BuilderPartA();
}
};
int _tmain()
{
Builder * pBuilder1=new ConcreteBuilder1();
Dirctor *pDirctor1=new Dirctor(pBuilder1);
pDirctor1->Construct();
Builder * pBuilder2=new ConcreteBuilder2();
Dirctor *pDirctor2=new Dirctor(pBuilder2);
pDirctor2->Construct();
delete pDirctor1;
delete pDirctor2;
return 0;
}