abstractfactory.cpp

来自「《Visual C++视频技术方案宝典》配套光盘」· C++ 代码 · 共 123 行

CPP
123
字号
// AbstractFactory.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "ostream.h"

//定义抽象类
class CAnimal
{
protected:
	int  m_Weight;  //重量
public:
	virtual void Cry() = 0;
};

class CPlant
{
protected:
	int m_Height;
public:
	virtual void Grow()=0;
};
//定义具体类
class CFish:  public CAnimal
{
public:
	virtual void Cry()
	{
		cout <<"I am Fish!\n";
	}
};
class CBird : public CAnimal
{
public:
	virtual void Cry()
	{
		cout <<"I am Bird!\n";
	}
};
class  CFlower: public CPlant
{
public:
	virtual void Grow()
	{
		cout<< "Flower is Growing!\n" ;
	}
};
class CTree: public CPlant
{
public:
	virtual void Grow()
	{
		cout << "Tree is Growing!\n";
	}
};
//定义工厂抽象类
class CFactory
{
public:
	virtual CAnimal* CreateObj() = 0;
	virtual CPlant * CreatePlant()=0;

};
//定义工厂具体类
class CFactory1 : public CFactory
{
public:
	virtual CAnimal* CreateObj()
	{
		return new CBird();
	}
	virtual CPlant * CreatePlant()
	{
		return new CFlower();
	}

};
class CFactory2: public CFactory
{
public:
	virtual CAnimal* CreateObj()
	{
		return new CFish();
	}
	virtual CPlant * CreatePlant()
	{
		return new CTree();
	}
};

int main(int argc, char* argv[])
{
	CAnimal* pAnimal1,* pAnimal2;
	CPlant* pPlant1,* pPlant2;

	CFactory * pFactory1,* pFactory2;

	pFactory1 = new CFactory1();
	pFactory2 = new CFactory2();

	pAnimal1 =  pFactory1->CreateObj();
	pPlant1 = pFactory1->CreatePlant();

	pAnimal2 = pFactory2->CreateObj();
	pPlant2 = pFactory2->CreatePlant();

	pAnimal1->Cry();
	pAnimal2->Cry();
	pPlant1->Grow();
	pPlant2->Grow();

	delete pAnimal1;
	delete pAnimal2;
	delete pPlant1;
	delete pPlant2;




	return 0;
}

⌨️ 快捷键说明

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