设计模式实现(九)--- 建造者模式(Builder)
2014-07-29 21:06
267 查看
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示的意图时,我们需要应用一个设计模式,“建造者模式(Builder)”,又叫生成器模式。
建造者模式可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
如果我们用了建造者模式,那么用户就只需指定需要建造的类型可以得到它们,而具体建造的过程和细节就不需要知道了。
建造者模式实例
建造者模式可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
如果我们用了建造者模式,那么用户就只需指定需要建造的类型可以得到它们,而具体建造的过程和细节就不需要知道了。
建造者模式实例
#include <string> #include <iostream> using namespace std; //Product类---产品类,由多个部件组成 class Product { public: string part1,part2; public: void show() { cout << part1 << endl; cout << part2 << endl; } }; //Builder类---抽象建造者类,确定产品由两个部件PartA和PartB组成,并声明一个得到产品建造后结果的方法GetResult(); class Builder { public: virtual void SetPart1(string part1) = 0; //此处用虚函数,如果该类的子类没有对着两个类进行实现的话,则会出现编译错误。也就是起到了抽象类的作用 virtual void SetPart2(string part2) = 0; virtual Product &getResult() = 0; }; //ConcreteBuilder1类---具体建造者类 class ConcreteBuilder1 : public Builder { public: Product product; public: void SetPart1(string part1) { product.part1 = "具体类1--方法1"; } void SetPart2(string part2) { product.part2 = "具体类1--方法2"; } Product &getResult() { return product; } }; class ConcreteBuilder2 : public Builder { public: Product product; public: void SetPart1(string part1) { product.part1 = "具体类2--方法1"; } void SetPart2(string part2) { product.part2 = "具体类2--方法2"; } Product &getResult() { return product; } }; //Director类---指挥者类 class Director { public: void Construct(Builder &builder) { builder.SetPart1("111"); //决定调用建造类中的哪些方法,可以选择都进行调用(比如创建人的头、躯干、四肢),或者部分调用(比如有些车可以飞(翅膀),有些车可以游(叶轮)) builder.SetPart2("111"); } }; int main() { Director director; Builder *b1 = new ConcreteBuilder1(); Builder *b2 = new ConcreteBuilder2(); director.Construct(*b1); Product p1 = b1->getResult(); p1.show(); director.Construct(*b2); Product p2 = b2->getResult(); p2.show(); return 1; }
相关文章推荐
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 建造者模式(Builder) - Java实现
- 设计模式之—建造者模式(Builder)-Java实现
- 我所理解的设计模式(C++实现)——建造者模式(Builder Pattern)
- java实现建造者模式(Builder Pattern)
- 设计模式C++学习笔记之十(Builder建造者模式)
- 设计模式(三)之建造者模式(Builder) C++实现
- 建造者模式(Builder Pattern)的实现和示例demo
- 我所理解的设计模式(C++实现)——建造者模式(Builder Pattern)
- 我所理解的设计模式(C++实现)——建造者模式(Builder Pattern)
- 设计模式(四)——建造者模式(Builder)
- 【设计模式】使用unity实现建造者模式(Builder mode)
- 设计模式(三)建造者模式Builder(创建型)
- 设计模式C++学习笔记之十(Builder建造者模式)
- 设计模式总结篇系列:建造者模式(Builder)
- 设计模式C++实现(6)——建造者模式
- 23种设计模式之建造者模式(创建型,4 Builder,c++实现)
- 设计模式C++学习笔记之十(Builder建造者模式)
- 设计模式C++实现(3)——建造者模式(Builder)
- 设计模式C++实现(6)——建造者模式
- 设计模式C++实现(6)——建造者模式