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

来源:互联网 发布:html5 css3游戏源码 编辑:程序博客网 时间:2024/04/30 02:38
#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(){}//构造函数};//建造者1class 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,生成器2class 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");}};*/

原创粉丝点击