您的位置:首页 > 编程语言 > C语言/C++

c++ 23种设计模式之建造者模式

2013-01-23 15:15 393 查看
#include <stdio.h>

//c++ 23种设计模式之建造者模式,(生成器模式)
namespace DesignPattern_Builder
{

class Product1{

};
class Product2{

};

class Builder
{

public:
virtual void BuilderPartA(){}
virtual void BuilderPartB(){}
virtual void BuilderPartC(){}
protected:
Builder(){}//构造函数

};
//建造者1
class ConcreteBuilder1:public Builder
{
public:
ConcreteBuilder1():_product(NULL){}

virtual void BuilderPartA(){ printf("生成器1 生成 PartA \n");}
virtual void BuilderPartB(){ printf("生成器1 生成 PartB \n");}
virtual void BuilderPartC(){ printf("生成器1 生成 PartC \n");}
virtual Product1 *GetProduct1(){ return _product;}
private:
Product1 *_product;

};
//建造者2,生成器2
class ConcreteBuilder2:public Builder
{
public:
ConcreteBuilder2():_product(NULL){}

virtual void BuilderPartA(){ printf("生成器2 生成 PartA \n");}
virtual void BuilderPartB(){ printf("生成器2 生成 PartB \n");}
virtual void BuilderPartC(){ printf("生成器2 生成 PartC \n");}
virtual Product2 *GetProduct2(){ return _product;}
private:
Product2 *_product;

};
class Director
{

public:
void Construct(Builder *builder)
{

builder->BuilderPartA();
builder->BuilderPartB();
builder->BuilderPartC();
}
};
}
/**
void main()
{

using namespace DesignPattern_Builder;
Director director;
ConcreteBuilder1 *pBuilder1=new ConcreteBuilder1();
director.Construct(pBuilder1);
Product1 *product1=pBuilder1->GetProduct1();
if(product1!=NULL)
{

printf("生成器1 生成的产品不为空!\n");
}

ConcreteBuilder2 *pBuilder2=new ConcreteBuilder2();
director.Construct(pBuilder2);
Product2 *product2=pBuilder2->GetProduct2();
if(product1!=NULL)
{

printf("生成器2 生成的产品不为空!\n");
}

};
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: