📄 builder.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 + -