// AbstractFactory.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "ostream.h"
//定义抽象类
class CAnimal
{
protected:
int m_Weight;
// 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; } |