#include <iostream>
using namespace std;
class CLeiFeng
{
public:
virtual ~CLeiFeng()
{
}
virtual void cook()
{
}
virtual void clean()
{
}
virtual void laundry()
{
}
};
class CHelperA:public CLeiFeng
{
public:
void cook()
{
cout<<"Helper cook"<<endl;
}
void clean()
{
cout<<"Helper clean"<<endl;
}
void laundry()
{
cout<<"Helper laundry"<<endl;
}
};
class CHelperB:public CLeiFeng
{
public:
void cook()
{
cout<<"HelperB cook"<<endl;
}
void clean()
{
cout<<"HelperB clean"<<endl;
}
void laundry()
{
cout<<"HelperB laundry"<<endl;
}
};
class IFactory
{
public:
virtual ~IFactory()
{
}
virtual CLeiFeng *GetFactory()
{
return NULL;
}
};
class CHelperAFactory:public IFactory
{
public:
CLeiFeng *GetFactory()
{
return new CHelperA;
}
};
class CHelperBFactory:public IFactory
{
public:
CLeiFeng *GetFactory()
{
return new CHelperB;
}
};
int main()
{
IFactory *factory = new CHelperBFactory();
factory->GetFactory()->cook();
return 0;
}
/******本功能实现学雷锋帮人做家务******/
打印结果:
HelperB cook