建造者模式c++实现-创新互联
构造一个超复杂对象的时候 将其构造过程和表示相分离 让其构造过程高度可以变化 通过增加director类可以更改构造步骤的顺序 通过增加新的builder类可以高度自定义每个步骤的过程
创新互联公司于2013年开始,先为抚顺县等服务建站,抚顺县等地企业,进行企业商务咨询服务。为抚顺县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。缺点:一般只有超大型项目才会使用该模式 其他不需要 且类繁多 代码不好阅读
优点:符合开闭原则 将构造过程与表示彻底分离 可以随心所欲的构造复杂对象
uml图:
代码实现如下:
//builder适用场景 大型项目 极其复杂的类对象的创建 且创建该类对象时遵循的步骤是相同的
//可以将对象的创建与表示相分离 比如考虑如下一个场景 一个人类要被生产则要由手脚头躯干四部分组成
//但是每一个组件的生成都是高度可自定义的 我们就可以做如下抽象
//适用于构建过程变化非常频繁的对象 且构造步骤也非常麻烦 通过修改增加director可以更改装配步骤
//通过修改增加builder可以增加不同步骤的不同实现
//但是如果要加入新的步骤 新的构造过程则需要更改抽象基类builder也会变得非常麻烦
class human
{
public:
void some_complex_func_before_build() {};
};
class man :public human
{
};
class woman :public human
{
};
class humanBuilder
{
public:
virtual void buildArm() = 0;
virtual void buildHead() = 0;
virtual void buildFeet() = 0;
virtual void buildBody() = 0;
virtual human* getResult() = 0;
protected:
human* human_;
};
class manBuilder:public humanBuilder
{
public:
manBuilder()
{
human_ = new man;
}
human* getResult()
{
return human_;
}
virtual void buildArm()
{
human_->some_complex_func_before_build();
}
virtual void buildHead()
{
human_->some_complex_func_before_build();
}
virtual void buildFeet()
{
human_->some_complex_func_before_build();
}
virtual void buildBody()
{
human_->some_complex_func_before_build();
}
};
class womanBuilder :public humanBuilder
{
public:
womanBuilder()
{
human_ = new woman;
}
human* getResult()
{
return human_;
}
virtual void buildArm()
{
human_->some_complex_func_before_build();
}
virtual void buildHead()
{
human_->some_complex_func_before_build();
}
virtual void buildFeet()
{
human_->some_complex_func_before_build();
}
virtual void buildBody()
{
human_->some_complex_func_before_build();
}
};
class humandirector
{
humandirector(humanBuilder* h):human_builder_(h)
{
}
human* construst()
{
human_builder_->buildArm();
human_builder_->buildBody();
human_builder_->buildFeet();
human_builder_->buildHead();
return human_builder_->getResult();
}
private:
humanBuilder* human_builder_;
};
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享题目:建造者模式c++实现-创新互联
文章路径:http://scyanting.com/article/hjopd.html