代码:
#include <iostream>
using namespace std;
class builder
{
public:
virtual void buildPartA() = 0;
virtual void buildPartB() = 0;
};
//builder1
class builder1 : public builder
{
public:
void buildPartA()
{
cout<<"add part A-1"<<"\n";
}
void buildPartB()
{
cout<<"add part B-1"<<"\n";
}
};
//builder2
class builder2 : public builder
{
public:
void buildPartA()
{
cout<<"add part A-2"<<"\n";
}
void buildPartB()
{
cout<<"add part B-2"<<"\n";
}
};
//Director
class Director
{
private:
builder *m_pBuilder;
public:
Director(builder *build) { m_pBuilder = build; }
void Create(){
m_pBuilder->buildPartA();
m_pBuilder->buildPartB();
}
};
int main()
{
builder2 pa;
Director director(&pa);
director.Create();
return 0;
}
运行结果:
ngnsvr9 [** NONE **]/home/xionghailong/demo/builder $ g++ main.cpp -o main
ngnsvr9 [** NONE **]/home/xionghailong/demo/builder $ ./main
add part A-2
add part B-2