65,208
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
class CProduct
{
public:
CProduct(void);
~CProduct(void);
virtual void Start(void) = 0;
};
class CProductWindows: public CProduct
{
public:
CProductWindows(void);
~CProductWindows(void);
virtual void Start(void);
};
class CProductLinux:public CProduct
{
public:
CProductLinux(void);
~CProductLinux(void);
virtual void Start(void);
};
class CFactory
{
public:
CFactory(void);
~CFactory(void);
virtual CProduct * FactoryMedot(void) = 0;
};
class CFactoryWindows:public CFactory
{
public:
CFactoryWindows(void);
~CFactoryWindows(void);
virtual CProduct* FactoryMedot(void);
};
class CFactoryLinux:public CFactory
{
public:
CFactoryLinux(void);
~CFactoryLinux(void);
virtual CProduct* FactoryMedot(void);
}
CProduct::CProduct(void)
{
printf("CProduct::CProduct");
}
CProduct::~CProduct(void)
{
printf("CProduct::~CProduct");
}
CProductWindows::CProductWindows(void)
{
printf("CProductWindows::CProductWindows\n");
}
CProductWindows::~CProductWindows(void)
{
printf("CProductWindows::~CProductWindows\n");
}
void CProductWindows::Start(void)
{
printf("WINDOWS-Product");
}
CProductLinux::CProductLinux(void)
{
printf("CProductLinux::CProductLinux\n");
}
CProductLinux::~CProductLinux(void)
{
printf("CProductLinux::~CProductLinux\n");
}
void CProductLinux::Start(void)
{
printf("LINUX-Product\n");
}
CFactory::CFactory(void)
{
printf("CFactory::CFactory");
}
CFactory::~CFactory(void)
{
printf("CFactory::~CFactory");
}
CFactoryWindows::CFactoryWindows(void)
{
printf("CFactoryWindows::CFactoryWindows\n");
}
CFactoryWindows::~CFactoryWindows(void)
{
printf("CFactoryWindows::~CFactoryWindows\n");
}
CProduct* CFactoryWindows::FactoryMedot(void)
{
return new CProductWindows;
}
CFactoryLinux::CFactoryLinux(void)
{
printf("CFactoryLinux::CFactoryLinux");
}
CFactoryLinux::~CFactoryLinux(void)
{
printf("CFactoryLinux::~CFactoryLinux");
}
CProduct* CFactoryLinux::FactoryMedot(void)
{
return new CProductLinux;
}
int _tmain(int argc, _TCHAR* argv[])
{
CFactoryWindows *fWindows = new CFactoryWindows;
CProduct *pWindows = fWindows->FactoryMedot();
CFactoryLinux *fLinux = new CFactoryLinux;
CProduct*pLinux = fLinux->FactoryMedot();
delete [] fWindows;
delete [] pWindows;
delete [] fLinux;
delete [] pLinux;
return 0;
}