#include <iostream>
using namespace std;
/*****简单工厂实现家务******/
enum eType
{
ECOOK=0,
ECLEAN,
ELAUNDRY
};
class CHousework
{
public:
virtual ~CHousework()
{
}
virtual void Action()
{
cout << "Let's do housework..."<<endl;
}
};
class CCook:public CHousework
{
public:
void Action()
{
cout <<"Begin to cook..."<<endl;
}
};
class CClean:public CHousework
{
public:
void Action()
{
cout <<"Begin to clean..."<<endl;
}
};
class CLaundry:public CHousework
{
public:
void Action()
{
cout <<"Begin to laundry..."<<endl;
}
};
class CFactory
{
private:
CHousework *m_pHousework;
public:
CFactory(eType etype)
{
switch(etype)
{
case ECOOK:
m_pHousework= new CCook;
break;
case ECLEAN:
m_pHousework= new CClean;
break;
case ELAUNDRY:
m_pHousework= new CLaundry;
break;
default:
break;
}
}
void Action()
{
m_pHousework->Action();
}
~CFactory()
{
if(m_pHousework!=NULL)
{
delete m_pHousework;
m_pHousework=NULL;
}
}
};
int main()
{
CFactory work(ECLEAN);
work.Action();
return 0;
}
10-02