builder模式
来源:互联网 发布:重庆正规网络整合营销 编辑:程序博客网 时间:2024/06/06 06:43
// Builder.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "Builder.h"#include "Product.h"#include "Director.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){Director *d = new Director(new ConcreteBuilder());d->Construct();while(true);return 0;}
#ifndef_DIRECTOR_H_#define _DIRECTOR_H_class Builder;class Director{public:Director(Builder * bld);~Director();void Construct();protected:private:Builder * _bld;};#endif
#include "stdafx.h"#include "Director.h"#include "Builder.h"Director::Director(Builder * bld){_bld = bld;}Director::~Director(){}void Director::Construct(){_bld->GetProduct();_bld->BuilderPartA("user-defined");_bld->BuilderPartB("user-defined");_bld->BuilderPartC("user-defined");}
#ifndef _BUILDER_H_#define _BUILDER_H_#include <string>using namespace std;class ProductBuilder;class Builder{public:virtual ~Builder();virtual void BuilderPartA(const string & buildPara) = 0;virtual void BuilderPartB(const string & buildPara) = 0;virtual void BuilderPartC(const string & buildPara) = 0;virtual ProductBuilder * GetProduct() = 0;protected:Builder();private:};class ConcreteBuilder:public Builder{public:ConcreteBuilder();~ConcreteBuilder();void BuilderPartA(const string & buildPara);void BuilderPartB(const string & buildPara);void BuilderPartC(const string & buildPara);ProductBuilder *GetProduct();protected:private:};#endif
#include "stdafx.h"#include "Builder.h"#include "Product.h"#include <iostream>using namespace std;Builder::Builder(){}Builder::~Builder(){}ConcreteBuilder::ConcreteBuilder(){}ConcreteBuilder::~ConcreteBuilder(){}void ConcreteBuilder::BuilderPartA(const string & buildPara){cout<<"step1:partA..."<<buildPara<<endl;}void ConcreteBuilder::BuilderPartB(const string & buildPara){cout<<"step1:partB..."<<buildPara<<endl;}void ConcreteBuilder::BuilderPartC(const string & buildPara){cout<<"step1:partC..."<<buildPara<<endl;}ProductBuilder *ConcreteBuilder::GetProduct(){BuilderPartA("pre-defined");BuilderPartB("pre-defined");BuilderPartC("pre-defined");return new ProductBuilder();}
#ifndef _PRODUCT_H_#define _PRODUCT_H_class ProductBuilder{public:ProductBuilder();~ProductBuilder();void ProducePart();protected:private:};class ProductPart{public:ProductPart();~ProductPart();ProductPart *BuilderPart();protected:private:};#endif
#include "stdafx.h"#include "Product.h"#include <iostream>using namespace std;ProductBuilder::ProductBuilder(){ProducePart();cout<<"return a product"<<endl;}ProductBuilder::~ProductBuilder(){}void ProductBuilder::ProducePart(){cout<<"build part of product.."<<endl;}ProductPart::ProductPart(){}ProductPart::~ProductPart(){}ProductPart *ProductPart::BuilderPart(){return new ProductPart;}
0 0
- builder 模式
- Builder模式
- Builder 模式
- Builder模式
- builder模式
- builder模式
- Builder模式
- builder模式
- Builder模式
- Builder 模式
- Builder 模式
- Builder模式
- Builder模式
- builder模式
- builder模式
- builder模式
- Builder模式
- Builder模式
- 使用Maven构建Hibernate项目时not found /hibernate.cfg.xml 问题解决
- [.Net码农].Net中的json操作类
- test7.6
- ios蓝牙开发(四)BabyBluetooth蓝牙库介绍
- java中只有按值传递,没有按引用传递!
- builder模式
- Target runtime Apache Tomcat v7.0 is not defined.
- Java中的值传递和引用传递
- 本地hadoop2.6部署注意事项
- C程序设计实验2
- 我们经常在一个activity中去start另一个activity,或者与另一个acitivity的结果进行交互(startActivityForResult)。但有没有想过可能会出现的permiss
- Android Silent Install Apk(Android 静默安装)
- nginx + tomcat 集群实现负载均衡
- 【.Net码农】List<T> 类