设计模式之Builder模式
来源:互联网 发布:淘宝助理下载不了订单 编辑:程序博客网 时间:2024/05/21 10:04
Builder模式的关键是其中的Director对象并不直接返回对象,而是通过一步步来一步步进行对象的创建。当然这里Director可以提供一个默认的返回对象的接口(即返回通用的复杂对象的创建,即不指定或者特定唯一指定BuilderProduct*中的参数)。
Product.h
#ifndef _PRODUCT_H_#define _PRODUCT_H_class CProduct{public :CProduct();~CProduct();};#endif
Produce.cpp
#include "Product.h"CProduct::CProduct(){}CProduct::~CProduct(){}
Builder.h
#ifndef __BUILDER_H_#define __BUILDER_H_#include "Product.h"#include <string>#include <iostream>using namespace std;class CBuilder //As a Interface{public:CBuilder();~CBuilder();virtual void BuilderProductA(const string A)=0;virtual void BuilderProductB(const string B)=0;virtual void BuilderProductC(const string C)=0;virtual CProduct *GetProduct()=0;};#endif
Builder.cpp
#include "Builder.h"CBuilder::CBuilder(){}CBuilder::~CBuilder(){}
ConcreterBuilder.h
#ifndef __CONCERTERBUILDER_H_#define __CONCERTERBUILDER_H_#include "Product.h"#include "Builder.h"class CConcerterBuilder:public CBuilder{public:CConcerterBuilder();~CConcerterBuilder();void BuilderProductA(const string A);void BuilderProductB(const string B);void BuilderProductC(const string C);CProduct *GetProduct();};#endif
ConcreterBuilder.cpp
#include "ConcreterBuilder.h"CConcerterBuilder::CConcerterBuilder(){}CConcerterBuilder::~CConcerterBuilder(){}void CConcerterBuilder::BuilderProductA(const string A){cout<<A<<endl;}void CConcerterBuilder::BuilderProductB(const string B){cout<<B<<endl;}void CConcerterBuilder::BuilderProductC(const string C){cout<<C<<endl;}CProduct * CConcerterBuilder::GetProduct(){return new CProduct;}
Main.cpp
#include <iostream>#include "Director.h"#include "ConcreterBuilder.h"using namespace std;int main(){ CDirector *pDir=new CDirector(new CConcerterBuilder()); pDir->Construct(); delete pDir; return 0;}
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之 builder
- 设计模式之Builder
- 设计模式之builder
- 两分钟学会在GitHub托管代码
- 右键获取listview
- MDK下怎样才能让变量在复位时不被初始化
- 在Flash中使用Google Protocol Buffers
- KMP算法Next数组计算
- 设计模式之Builder模式
- Linux 信号signal处理机制(转载有改动)
- nosql
- 电子商务示范网站
- tail命令行参数
- ORA-00913: 值过多
- 右键获取listview控件各个单元格的值,想更改就简单了吧
- uva321 - The New Villa(新别墅)
- Mtk 下的图形渲染配置文件egl.cfg