GOOD:修正了简单工厂模式中不遵守开放-封闭原则。工厂方法模式把选择判 断移到了客户端去实现,如果想添加新功能就不用修改原来的类,直接修改客户端即可。
#include <iostream>
#include <string>
using namespace std;
class LeiFeng
{
public:
void sweep()
{
cout<<"扫地"<<endl;
}
void wash()
{
cout<<"洗衣服"<<endl;
}
};
class Student:public LeiFeng
{};
class Volunteer:public LeiFeng
{};
class SimpleFactory
{
public:
static LeiFeng *createLeiFeng(string str)
{
LeiFeng *lf;
lf=NULL;
if(str=="学生")
{
lf=new Student();
}
if(str=="自愿者")
{
lf=new Volunteer();
}
return lf;
}
};
class IFactory
{
public:
virtual LeiFeng *createLeiFeng()=0;
};
class StuFactory:public IFactory
{
static LeiFeng *createLeiFeng()
{
return new Student();
}
};
class VolFactory:public IFactory
{
static LeiFeng *createLeiFeng()
{
return new Volunteer();
}
};
int main()
{
return 0;
}