1、基类与子类 (state_init、state_routing、state_exexute:将要通过工厂生产的子类)
class state
{
public:
virtual void process() = 0;
};
class state_init : virtual public state
{
public:
virtual void process(){
cout << "state_init. process" << endl;
}
};
class state_routing : virtual public state
{
public:
virtual void process(){
cout << "state_routing. process" << endl;
}
};
class state_execute : virtual public state
{
public:
virtual void process(){
cout << "state_execute. process" << endl;
}
};
2、工厂类
class statefactory{
public:
static state* generate_state(const string& operate){
if (operate == "init"){
return new state_init();
}else if (operate == "routing"){
return new state_routing();
}else if (operate == "execute"){
return new state_execute();
}else{
return NULL;
}
}
};
3、应用
int main()
{
state* pinit = statefactory::generate_state("init");
state* proute = statefactory::generate_state("routing");
state* pexecute = statefactory::generate_state("execute");
if (pinit){
pinit->process();
delete pinit;
pinit = NULL;
}else{
cout << "pinit is null" << endl;
}
if (proute){
proute->process();
delete proute;
proute = NULL;
}else{
cout << "proute is null" << endl;
}
if (pexecute){
pexecute->process();
delete pexecute;
pexecute = NULL;
}else{
cout << "pexecute is null" << endl;
}
return 0;
}