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

#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");
	}


};
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值