#include<iostream>
#include<list>
#include<string>
using namespace std;
class product
{
list<string>ls;
public:
void add(string m_str)
{
ls.push_back(m_str);
}
void show()
{
list<string>::iterator itr = ls.begin();
for(;itr!=ls.end();++itr)
{
cout<<*itr<<endl;
}
}
};
class builder
{
public:
virtual void head(){};
virtual void body(){};
virtual void leg(){};
virtual void hand(){};
virtual product getresult(){product s;return s;};
};
class conbuild1:public builder
{
private:
product *m_product;
public:
conbuild1()
{
m_product = new product();
}
void head()
{
m_product->add("1的头");
}
void body()
{
m_product->add("1的身体");
}
void leg()
{
m_product->add("1的腿");
}
void hand()
{
m_product->add("1的手");
}
product getresult()
{
return *m_product;
}
};
class conbuild2:public builder
{
private:
product *m_product;
public:
conbuild2()
{
m_product = new product();
}
void head()
{
m_product->add("2的头");
}
void body()
{
m_product->add("2的身体");
}
void leg()
{
m_product->add("2的腿");
}
void hand()
{
m_product->add("2的手");
}
product getresult()
{
return *m_product;
}
};
class director
{
public:
void createpeople(builder *s)
{
s->body();
s->hand();
s->leg();
s->head();
}
};
int main()
{
director s;
builder *p1 = new conbuild1;
builder*p2 = new conbuild2;
s.createpeople(p1);
product s1 = p1->getresult();
s1.show();
cout<<"---------------"<<endl;
s.createpeople(p2);
product s2 = p2->getresult();
s2.show();
}
十四、建造者模式
最新推荐文章于 2024-08-27 17:19:33 发布