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

📄 builder.cpp

📁 《Visual C++视频技术方案宝典》配套光盘
💻 CPP
字号:
// Builder.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"


#define MAXLEN  128
//定义抽象产品
class  CAnimal 
{
public:
	char* m_pMouth;
	char* m_pFeet;
public:
	virtual void Cry()=0 ;
};

//定义具体产品
class CCat : public CAnimal
{
public:
	virtual void Cry()
	{
		printf("%s\n%s\n",m_pMouth,m_pFeet);
	}
	CCat()
	{
		m_pMouth = new char[MAXLEN];
		m_pFeet  = new char[MAXLEN];
	}
	virtual ~CCat()
	{
		delete [] m_pMouth;
		delete [] m_pFeet;
	}
};

class CDog : public CAnimal
{
public:
	virtual void Cry()
	{
		printf("%s\n%s\n",m_pMouth,m_pFeet);
	}
	CDog()
	{
		m_pMouth = new char[MAXLEN];
		m_pFeet  = new char[MAXLEN];		
	}
	virtual ~CDog()
	{	
		delete [] m_pMouth;
		delete [] m_pFeet;	
	}
};

//定义抽象构造者
class  CBuilder
{
public:
	virtual void CreateMouth() = 0;
	virtual void CreateFeet()  = 0;
	virtual CAnimal* ReturnProduct() = 0;
};

//定义具体构造者
class CBuilderCat: public CBuilder
{
public:
	CCat m_Cat;
	virtual void CreateMouth()
	{
		m_Cat.m_pMouth = "miao,miao!";
	}
	virtual void CreateFeet()
	{
		m_Cat.m_pFeet = "CatFeet";
	}

	virtual CAnimal* ReturnProduct()
	{
		return &m_Cat;
	}
};

class CBuilderDog: public CBuilder
{
public:
	CDog m_Dog;
	virtual void CreateMouth()
	{
		m_Dog.m_pMouth = "wang,wang!";
	}
	virtual void CreateFeet()
	{
		m_Dog.m_pFeet = "DogFeet";
	}
	virtual CAnimal* ReturnProduct()
	{
		return &m_Dog;
	}
};

//定义外部客户
class CActor
{
public:
	CBuilder* m_pBuilder;
	void  CreateProduct()
	{
		m_pBuilder = new CBuilderDog;
		m_pBuilder->CreateMouth();
		m_pBuilder->CreateFeet();
	}
};

int main(int argc, char* argv[])
{
	CActor actor;
	actor.CreateProduct();
	CAnimal* pAnimal =  actor.m_pBuilder->ReturnProduct();
	pAnimal->Cry();
	delete actor.m_pBuilder;
	return 0;
}

⌨️ 快捷键说明

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