建造者模式(Builder)
意图
适用性
当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
当构造过程必须允许被构造的对象有不同的表示时。
建造者模式(Builder)
MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞定,这就是我的“我爱你 ”builder。(这一定比美军在
伊拉克
用的
翻译机
好卖)
建造者模式
:将对象的内部表象和对象的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。
class Person
{
public:
virtual void CreateHead() = 0;
virtual void CreateHand() = 0;
virtual void CreateBody() = 0;
virtual void CreateFoot() = 0;
};
class ThinPerson: public Person
{
public:
virtual void CreateHead()
{
cout << "Create Thin Head" << endl;
}
virtual void CreateHand()
{
cout << "Create Thin Hand" << endl;
}
virtual void CreateBody()
{
cout << "Create Thin Body" << endl;
}
virtual void CreateFoot()
{
cout << "Create Thin Foot" << endl;
}
};
class ThickPerson: public Person
{
public:
virtual void CreateHead()
{
cout << "Create Thick Head" << endl;
}
virtual void CreateHand()
{
cout << "Create Thick Hand" << endl;
}
virtual void CreateBody()
{
cout << "Create Thick Body" << endl;
}
virtual void CreateFoot()
{
cout << "Create Thick Foot" << endl;
}
};
//指挥者类
class Direct
{
private:
Person * p;
public:
Direct(Person * temp){p = temp;}
void Create()
{
p->CreateHead();
p->CreateHand();
p->CreateBody();
p->CreateFoot();
}
};
int _tmain(int argc, char argv[])
{
Person * p = new ThickPerson();
Direct * d = new Direct(p);
d->Create();
delete p;
delete d;
return 0;
}