// FactoryMethod.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "ostream.h"
//定义抽象类
class CAnimal
{
protected:
int m_Weigh
// FactoryMethod.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 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 CFactory { public: virtual CAnimal* CreateObj() = 0; }; //定义工厂具体类 class CFactory1 : public CFactory { public: virtual CAnimal* CreateObj() { return new CBird(); } }; class CFactory2: public CFactory { public: virtual CAnimal* CreateObj() { return new CFish(); } }; int main(int argc, char* argv[]) { CAnimal* pAnimal1,*pAnimal2; CFactory * pFactory1,*pFactory2; pFactory1 = new CFactory1(); pAnimal1 = pFactory1->CreateObj(); pAnimal1->Cry(); pFactory2 = new CFactory2(); pAnimal2 = pFactory2->CreateObj(); pAnimal2->Cry(); delete pAnimal1; delete pAnimal2; delete pFactory1; delete pFactory2; return 0; }