设计模式之九:建造者模式(Builder)
来源:互联网 发布:c语言sqrt函数 编辑:程序博客网 时间:2024/05/17 07:22
建造者模式:
将一个复杂对象的建造过程和它的表示分离开来,这样相同的建造过程可以创建不同的表示。
Separate the construction of a complex object from its representation so that the same construction process can create different representations.
通俗一点就是如果流程是一样的,可以将这些流程抽象成一个类的一些接口,具体的创建过程可以在这个抽象类的子类中来实现。
C++中这个特性主要就是使用纯虚函数来实现。
UML图:
主要包括:
- Builder:指定了一个创建Product的一系列的接口。
- ConcreteBuilder:通过实现Builder中的接口具体实现了创建的步骤
- Director:定义了一个Buidler对象的引用来使用Builder的接口
- Product:表示需要创建的对象,ConcreteBuilder创建这个对象的每一部分。
具体的C++代码如下:
#include <iostream>#include <stdlib.h>#include <stdio.h>#include <list>#include <string>using namespace std;class Product{ public: void addPart(string str) { parts.push_back(str); } list<string>& getParts() { return parts; } private: list<string> parts;};class Builder{ public: Builder() { product=new Product(); } virtual void buildPart1()=0; virtual void buildPart2()=0; void getResult() { list<string>::iterator iter=product->getParts().begin(); for(;iter!=product->getParts().end();iter++) { std::cout<<*iter<<std::endl; } } virtual ~Builder() { if(!product) delete product; } protected: Product *product;};class ConcreteBuilder1:public Builder{ public: void buildPart1() { product->addPart("part one"); } void buildPart2() { product->addPart("part two"); }};class ConcreteBuilder2:public Builder{ public: void buildPart1() { product->addPart("part X"); } void buildPart2() { product->addPart("part Y"); }};class Director{ public: Director() { } Director(Builder * b):build(b) { } void construct() { build->buildPart1(); build->buildPart2(); build->getResult(); } private: Builder *build;};int main(){ std::cout<<"建造者模式测试"<<std::endl; ConcreteBuilder1* cb1=new ConcreteBuilder1(); Director d1(cb1); d1.construct(); ConcreteBuilder2 * cb2=new ConcreteBuilder2(); Director d2(cb2); d2.construct(); return 0;}
执行结果如下:
0 0
- 设计模式之(九、建造者模式Builder)
- 设计模式之九:建造者模式(Builder)
- 【设计模式】之 Builder 建造者模式
- 设计模式之建造者(builder)模式
- 设计模式之建造者模式(Builder)
- 设计模式之建造者模式---Builder
- 设计模式之建造者模式(Builder)
- 设计模式之建造者模式(Builder)
- 设计模式之建造者(builder)模式
- 设计模式之Builder建造者模式
- 设计模式实现(九)--- 建造者模式(Builder)
- 设计模式之建造者模式(生成器模式、Builder)摘录
- java 设计模式之建造者模式(Builder)模式
- Builder(建造者)设计模式
- 设计模式---建造者模式(Builder)模式
- 设计模式之Builder(建造模式)
- 设计模式之建造模式Builder
- 设计模式之四 --- 建造(Builder)模式
- java 到底老年代和年轻代的比例为多大合适呢?
- 技术 blog10 by 八戒
- DOCKER INSTALL
- 验证scala.math.random生成的随机数是均匀分布的
- Binary Tree Postorder Traversal -- leetcode
- 设计模式之九:建造者模式(Builder)
- 《Java从入门到精通》第四章学习笔记
- 行编辑距离Edit Distance——动态规划
- 输入输出之File类的使用(一)
- 图片上传问题总结
- return 0与1 的区别
- U-boot and Flash (NOR, NAND & SPI)
- 什么是bin文件?
- 收藏网站