⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 builder.cpp

📁 这是一些c++例程
💻 CPP
字号:
namespace DesignPattern_Builder
{     /*定义类 class Product1 	class Product2表示被构造的复杂对象*/
	class Product1 { /*...*/ } ;
	class Product2 { /*...*/ } ;
	//定义类class Builder
	class Builder									//抽象基类
	{
	public:
		virtual void BuilderPartA() {}					//提供缺省实现
		virtual void BuilderPartB() {}
		virtual void BuilderPartC() {}
	protected:
		Builder() {}
	} ;
	//class ConcreteBuilder1
	class ConcreteBuilder1 : public Builder					//用于创建Product1
	{
	public:
		ConcreteBuilder1() : _product() {}
		virtual void BuilderPartA() { /*...*/ } 
		virtual void BuilderPartB() { /*...*/ }
		virtual void BuilderPartC() { /*...*/ }
		virtual Product1* GetProduct1() { return _product ; }		//返回创建的Product1对象
	private:
		Product1 *_product ;
	} ;
	//class ConcreteBuilder2
	class ConcreteBuilder2 : public Builder //用于创建Product2
	{
	public:
		ConcreteBuilder2() : _product() {}
		virtual void BuilderPartA() { /*...*/ } 
		virtual void BuilderPartB() { /*...*/ }
		virtual void BuilderPartC() { /*...*/ }
		virtual Product2* GetProduct2() { return _product ; }		//返回创建的Product2对象
	private:
		Product2 *_product ;
	} ;
	//class Director
	class Director
	{
	public:
		//创建对象(Director并不知道具体创建出来的对象是什么样的,只有调用该函数的client知道)
		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() ;
	//创建第二种对象
	ConcreteBuilder2 *pBuilder2 = new ConcreteBuilder2() ;
	director.Construct(pBuilder2) ;
	Product2 *product2 = pBuilder2->GetProduct2() ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -