设计模式(三)之建造者模式(Builder) C++实现
来源:互联网 发布:一品威客网 知乎 编辑:程序博客网 时间:2024/06/05 08:51
作用:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
解析:
Builder模式是基于这样的一个情况:一个对象可能有不同的组成部分,这几个部分的不同的创建对象会有不同的表示,但是各个部分之间装配的方式是一致的。
Builder.h
// 抽象基类AbstractProductA,代表产品A的抽象class Builder{public: Builder(){} virtual ~Builder(){} virtual void BuildPartA() = 0; virtual void BuildPartB() = 0;};class ConcreateBuilder1 : public Builder{public: ConcreateBuilder1(){} virtual ~ConcreateBuilder1(){} virtual void BuildPartA(); virtual void BuildPartB();};class ConcreateBuilder2 : public Builder{public: ConcreateBuilder2(){} virtual ~ConcreateBuilder2(){} virtual void BuildPartA(); virtual void BuildPartB();};class Director{public: Director(Builder * pBuilder) : m_pBuilder(pBuilder){} ~Director(); void Construct();private: Builder * m_pBuilder;};
Builder.cpp
#include "Builder.h"#include <iostream>using namespace std;void ConcreateBuilder1::BuildPartA(){ cout << "ConcreateBuilder1 Step1:Build PartA..." << endl;}void ConcreateBuilder1::BuildPartB(){ cout << "ConcreateBuilder1 Step2:Build PartB..." << endl;}void ConcreateBuilder2::BuildPartA(){ cout << "ConcreateBuilder2 Step1:Build PartA..." << endl;}void ConcreateBuilder2::BuildPartB(){ cout << "ConcreateBuilder2 Step2:Build PartB..." << endl;}Director::~Director(){ delete m_pBuilder; m_pBuilder = NULL;}void Director::Construct(){ m_pBuilder->BuildPartA(); m_pBuilder->BuildPartB();}
main.cpp
#include "AbstractFactory.h"int main(int argc, char* argv[]){ Builder *builder1 = new ConcreateBuilder1(); Builder *builder2 = new ConcreateBuilder2(); Director *director = new Director(builder1); director->Construct(); delete director; director = new Director(builder2); director->Construct(); delete director; return 0;}
1 0
- 设计模式(三)之建造者模式(Builder) C++实现
- 设计模式(三)-建造者模式(Builder模式)
- 设计模式之Builder(建造模式)
- java 设计模式之建造者模式(Builder)模式
- 设计模式读书笔记(三) Builder(建造者)模式
- 建造者模式(Builder)-设计模式(三)
- 设计模式系列学习三:建造者模式(Builder)
- 设计模式实现(九)--- 建造者模式(Builder)
- 设计模式 - 建造者模式(Builder) C++实现
- [设计模式]建造者模式(Builder)
- 设计模式--建造者模式(Builder)
- 设计模式Builder(建造者)模式
- 设计模式 - 建造者模式(Builder)
- 设计模式:建造者模式(Builder)
- 设计模式-建造者模式(Builder)
- 设计模式:建造者模式(Builder)
- 设计模式:建造者模式(Builder)
- 设计模式:建造者模式(Builder)
- window 下无法安装 node 模块的一种情况
- mybatis中自定义boolean类型转换器
- 洛谷 P1403 [AHOI2005]约数研究
- Android Drawble
- ADB学习笔记
- 设计模式(三)之建造者模式(Builder) C++实现
- [生存志] 第120节 黄帝内经素问灵枢
- des两种加密方式讲解和测试
- IntelliJ IDEA 2016.3.3 配置Tomcat 运行Web项目
- 8VC Venture Cup 2017 - Elimination RoundC. PolandBall and Forest(并查集)
- redis服务启动报未知错误--UnKnown error
- LeetCode--476. Number Complement
- c++单例类
- jdbcType与javaType的对应关系