一、说明
建造者模式:将复杂对象的构建和其表示分离,使得相同的构建过程可以产生不同的表示。
以下情形可以考虑使用建造者模式:
对象的创建复杂,但是其各个部分的子对象创建算法一定。
需求变化大,构造复杂对象的子对象经常变化,但将其组合在一起的算法相对稳定。
建造者模式的优点:
将对象的创建和表示分离,客户端不需要了解具体的构建细节。
增加新的产品对象时,只需要增加其具体的建造类即可,不需要修改原来的代码,扩展方便。
产品之间差异性大,内部变化较大、较复杂时不建议使用建造者模式。
二、代码
#ifndef BUILDER_H
#define BUILDER_H
class builder
{
public:
virtual ~builder();
virtual void builderOne()=0;
virtual void builderTwo()=0;
};
class shoeBuilder: public builder
{
public:
shoeBuilder();
~shoeBuilder();
void builderOne() override;
void builderTwo() override;
};
class clotheBuilder: public builder
{
public:
clotheBuilder();
~clotheBuilder();
void builderOne() override;
void builderTwo() override;
};
class builderMgr
{
public:
builderMgr();
~builderMgr();
void construct(builder*b){
b->builderOne();
b->builderTwo();
}
};
class test
{
public:
test(){
shoeBuilder *shoeB = new shoeBuilder;
clotheBuilder *clothB = new clotheBuilder;
builderMgr *mgr = new builderMgr;
mgr->construct(shoeB);
mgr->construct(clothB);
delete shoeB;
delete clothB;
delete mgr;
}
};
#endif // BUILDER_H