#include <iostream>
#include <string>
#include <vector>
#include <iterator>
using namespace std;
class product
{
private:
vector<string> m_product;
public:
void Add(string str)
{
m_product.push_back(str);
}
void Show()
{
vector<string>::iterator it=m_product.begin();
for (; it!= m_product.end() ; it++)
{
cout<<*it;
}
cout<<endl;
}
};
class Builder
{
public:
virtual void BuildPartA()=0;
virtual void BuildPartB()=0;
virtual void show()=0;
};
class ConcreteBuild1 :public Builder
{
private:
product m_pro1;
public:
void BuildPartA()
{
m_pro1.Add("你个大西瓜");
}
void BuildPartB()
{
m_pro1.Add("你个水蜜桃");
}
public:
void show()
{
m_pro1.Show();
}
};
class ConcreteBuild2 :public Builder
{
private:
product m_pro2;
public:
void BuildPartA()
{
m_pro2.Add("温柔妩媚的芙蓉");
}
void BuildPartB()
{
m_pro2.Add("霸气销魂的春哥");
}
public:
void show()
{
m_pro2.Show();
}
};
class Director
{
public:
void Construct(Builder* builder)
{
builder->BuildPartA();
builder->BuildPartB();
}
};
int main()
{
Director dir;
Builder* p1=new ConcreteBuild1;
Builder* p2=new ConcreteBuild2;
dir.Construct(p1);
p1->show();
dir.Construct(p2);
p2->show();
}
c++-建造者模式
最新推荐文章于 2021-05-31 17:57:17 发布