10、建造者模式(Builder)
来源:互联网 发布:火焰恶作剧屏幕软件 编辑:程序博客网 时间:2024/05/04 08:53
要生产一个可以带有设置某些属性的对象,可以直接产生,可以定义一个创建者,其提供设置接口函数,并提供对象获取接口,将某一类产品封装起来,后面需要此产品时只需要调用创建者的创建接口就可以了。
另外可以进一步对创建者进行封装,将其封装成一个可以有多个预订设置的类(Director),这个类的每一个预订设置都提供一个创建接口,这样需要某个预订设置产品时只需要调用对应的接口就可以了。
main()
{
//不使用模式,直接产生对象
BenzModel *pBenz = new BenzModel();
pBenz->SetSequence(&seq);
pBenz->Run();
delete pBenz;
//定义设置seq
vector<string> seq;
seq.push_back("engine boom");
seq.push_back("start");
seq.push_back("stop");
//建造者benzBuilder使用seq去创建对象
BenzBuilder benzBuilder;
benzBuilder.SetSequence(&seq);
BenzModel *pBenza = dynamic_cast<BenzModel*>(benzBuilder.GetCarModel());
pBenza->Run();
//delete pBenza; //有Director的情况下,在这里delete会产生“段错误 (核心已转储)”错误
//建造者bmwBuilder使用seq去创建对象
BMWBuilder bmwBuilder;
bmwBuilder.SetSequence(&seq);
BMWModel *pBmw = dynamic_cast<BMWModel*>(bmwBuilder.GetCarModel());
pBmw->Run();
//delete pBmw; //有Director的情况下,在这里delete会产生“段错误 (核心已转储)”错误
//调用预订设置者Director的接口去创建对象
Director director;
for(int i = 0; i < 2; i++)
director.GetABenzModel()->Run();
}
另外可以进一步对创建者进行封装,将其封装成一个可以有多个预订设置的类(Director),这个类的每一个预订设置都提供一个创建接口,这样需要某个预订设置产品时只需要调用对应的接口就可以了。
main()
{
//不使用模式,直接产生对象
BenzModel *pBenz = new BenzModel();
pBenz->SetSequence(&seq);
pBenz->Run();
delete pBenz;
//定义设置seq
vector<string> seq;
seq.push_back("engine boom");
seq.push_back("start");
seq.push_back("stop");
//建造者benzBuilder使用seq去创建对象
BenzBuilder benzBuilder;
benzBuilder.SetSequence(&seq);
BenzModel *pBenza = dynamic_cast<BenzModel*>(benzBuilder.GetCarModel());
pBenza->Run();
//delete pBenza; //有Director的情况下,在这里delete会产生“段错误 (核心已转储)”错误
//建造者bmwBuilder使用seq去创建对象
BMWBuilder bmwBuilder;
bmwBuilder.SetSequence(&seq);
BMWModel *pBmw = dynamic_cast<BMWModel*>(bmwBuilder.GetCarModel());
pBmw->Run();
//delete pBmw; //有Director的情况下,在这里delete会产生“段错误 (核心已转储)”错误
//调用预订设置者Director的接口去创建对象
Director director;
for(int i = 0; i < 2; i++)
director.GetABenzModel()->Run();
}
0 0
- 10、建造者模式(Builder)
- 建造者(Builder)模式
- 建造者(Builder)模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者(Builder)模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者(Builder)模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式(Builder)
- Builder(建造者)模式
- 建造者(Builder)模式
- 建造者模式(builder)
- 建造者模式(Builder)
- 建造者模式(Builder)
- Builder(建造者)模式
- C++STL学习(3)容器list
- 使用Hibernate SQLQuery执行原生SQL
- C++虚函数及虚函数表解析
- crontab -e
- leetcode Minimum Path Sum
- 10、建造者模式(Builder)
- 浅谈WEB安全性(前端向)
- 第一篇博客
- V$LOCK视图相关知识
- 排序算法----冒泡排序+插入排序+选择排序+快速排序+希尔排序+堆排序+归并排序+计数排序+基数排序+桶排序(c语言)
- 二分查找
- sklearn中线性回归、岭回归、多xiang式回归
- PCLVisualizer可视化类
- 开启Material Design之旅——资源收集总结