创建型模式四之Builder
来源:互联网 发布:360摄像头软件下载 编辑:程序博客网 时间:2024/06/06 12:53
1. UML
2. 意图:讲一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
3. code
Builder.h
//Builder.h#ifndef _BUILDER_H_#define _BUILDER_H_#include <string>using namespace std;class Product;class Builder{public:virtual ~Builder();virtual void BuildPartA(const string& buildPara) = 0;virtual void BuildPartB(const string& buildPara) = 0;virtual void BuildPartC(const string& buildPara) = 0;virtual Product* GetProduct() = 0;protected:Builder();private:};class ConcreteBuilder:public Builder{public:ConcreteBuilder();~ConcreteBuilder();void BuildPartA(const string& buildPara);void BuildPartB(const string& buildPara);void BuildPartC(const string& buildPara);Product* GetProduct();};#endif //~_BUILDER_H_
Builder.cpp
//Builder.cpp#include "Builder.h"#include "Product.h"#include <iostream>using namespace std;Builder::Builder(){}Builder::~Builder(){}ConcreteBuilder::ConcreteBuilder(){}ConcreteBuilder::~ConcreteBuilder(){}void ConcreteBuilder::BuildPartA(const string& buildPara){cout<<"Step1:Build PartA..."<<buildPara<<endl;}void ConcreteBuilder::BuildPartB(const string& buildPara){cout<<"Step1:Build PartB..."<<buildPara<<endl;}void ConcreteBuilder::BuildPartC(const string& buildPara){cout<<"Step1:Build PartC..."<<buildPara<<endl;}Product* ConcreteBuilder::GetProduct(){BuildPartA("pre-defined");BuildPartB("pre-defined");BuildPartC("pre-defined");return new Product();}
Director.h
//Director.h#ifndef _DIRECTOR_H_#define _DIRECTOR_H_class Builder;class Director{public:Director(Builder* bld);~Director();void Construct();protected:private:Builder* _bld;};#endif //~_DIRECTOR_H_
Director.cpp
//Director.cpp#include "director.h"#include "Builder.h"Director::Director(Builder* bld){_bld = bld;}Director::~Director(){}void Director::Construct(){_bld->BuildPartA("user-defined");_bld->BuildPartB("user-defined");_bld->BuildPartC("user-defined");}
Product.h
//Product.h#ifndef _PRODUCT_H_#define _PRODUCT_H_class Product{public:Product();~Product();};#endif //~_PRODUCT_H_
Product.cpp
#include "Product.h"Product::Product(){}Product::~Product(){}
main.cpp
//main.cpp#include "Builder.h"#include "Product.h"#include "Director.h"#include <iostream>using namespace std;int main(int argc,char* argv[]){Builder *buider = new ConcreteBuilder();Director* director = new Director(buider);director->Construct();delete buider;delete director;return 0;}
- 创建型模式四之Builder
- 23种设计模式之四(创建型模式)Builder模式
- 设计模式之------创建型模式(四)-----建造者模式(Builder)
- 创建型模式之Builder模式
- 创建型设计模式之Builder模式
- Builder生成器(创建型设计模式)面向对象设计模式纵横谈讲座笔记之四
- 创建模式之Builder
- 四、创建型模式:建造者模式(BUILDER)
- 创建型模式之二---Builder
- 设计模式之四 ------Builder
- 创建型--builder模式
- 创建对象之Builder模式
- 设计模式之生成器(Builder)----对象创建型模式
- 设计模式笔记--创建型模式之二 Builder
- 设计模式-创建型模式之 Builder(生成器)
- 创建型模式之建造者模式(Builder)
- 创建型模式之建造者(Builder)模式
- 创建型模式之建造者模式(Builder)
- matlab 位操作
- linux系统管理之压缩篇
- 开发者必备:测试网站速度的五个免费在线工具
- PL/SQL客户端创建DBLink入门教程
- netbsd源码(3)
- 创建型模式四之Builder
- c、c++查看文件夹下某一类型文件的属性列表
- cocos2d-x 数学函数、常用宏粗整理
- Android 中文 API —— ScrollView
- linux驱动基础开发1——linux 设备驱动基本概念
- 线程池规模调优
- LRU Cache | leetcode
- easyui的tabs和modaldialog的session丢失问题。
- Oracle数据导入导出imp/exp