建造者模式
来源:互联网 发布:淘宝宝贝评分查询 编辑:程序博客网 时间:2024/05/16 17:44
建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们使用了建造者模式,那么用户就只需指定需要建造的类型就可以得到他们,而具体建造的过程和细节就不需要知道了。
Product就是具体产品类,由多个部件组成。
Builder是为创建一个Product对象的各个部件指定的抽象接口。
ConcreteBuilder是具体的建造者,实现Builder的接口,构造和装配各个部件。
指挥者Director就是根据需求的具体建造步骤。
建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。
代码:
//Builder.h
#include "stdafx.h"#include <iostream>#include <string>using namespace std;class Product{private:std::string _partA;std::string _partB;std::string _partC;public:void SetPartA(const string& partA){cout << "Product:A" << endl;_partA = partA;}void SetPartB(const string& partB){cout << "Product:B" << endl;_partB = partB;}void SetPartC(const string& partC){cout << "Product:C" << endl;_partC = partC;}};class Builder{public:virtual void BuildPartA() = 0;virtual void BuildPartB() = 0;virtual void BuildPartC() = 0;virtual Product* GetProduct() = 0; Builder(){}virtual ~Builder(){}};class ConcreteBuilder :public Builder{private:Product* _pProduct;public:ConcreteBuilder():Builder(){_pProduct = new Product();}~ConcreteBuilder(){delete(_pProduct);_pProduct = NULL;}virtual void BuildPartA(){cout << "ConcreteBuilder:A" << endl;_pProduct->SetPartA("A");}virtual void BuildPartB(){cout << "ConcreteBuilder:B" << endl;_pProduct->SetPartB("B");}virtual void BuildPartC(){cout << "ConcreteBuilder:C" << endl;_pProduct->SetPartC("C");}virtual Product* GetProduct(){return this->_pProduct;}};class Director{private:Builder *_pBuilder;public:~Director(){}Director(Builder* builder){_pBuilder = builder;}void Construct(){_pBuilder->BuildPartA();_pBuilder->BuildPartB();_pBuilder->BuildPartC();}};
// BuilderPattern.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "Builder.h"int _tmain(int argc, _TCHAR* argv[]){Director *pDirector = new Director(new ConcreteBuilder());pDirector->Construct();getchar();return 0;}
0 0
- Builder 建造者模式
- 建造者模式
- 设计模式-------建造者
- 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式
- 建造者模式 - builder
- 建造者模式
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式
- java建造者模式
- 建造者模式
- 建造者模式
- 建造者模式(Builder)
- 建造者模式
- linux 添加分区并挂载
- iPhone的九宫格实现代码
- BCD码转换 .net C# BCD 码转换
- Twitter 登录分享
- spring中MessageSource的配置使用方法
- 建造者模式
- Java 中的IO流系统详解
- hibernate session的常用方法解析
- 计算机科学-第13周 函数 题目及参考解答
- 凤舞九天メ凰定天下
- mybatis 提示404跳转异常因为spring下面有两个modelandview,坑爹又坑娘
- socket与TCP/UDP编程~
- android设置输出System.out.println
- linux crontab命令参数及用法详解--linux自动化定时任务cron