状态模式的作用是将判断条件的代码转换为c++的多态性,状态在不同的对象实例间切换,从而完成了实际的判断,优化代码的结构
代码来源于《c++编程思想》
class Creature {
class State {
public:
virtual const string response() = 0;
};
class Frog : public State {
public:
const string response() {
string str = "Ribbet!";
return str;
}
};
class Prince : public State {
public:
const string response() {
string str = "Darling!";
return str;
}
};
State* state;
public:
Creature() : state(new Frog()) {}
void greet() {
cout << state->response().c_str() << endl;
}
void kiss() {
delete state;
state = new Prince();
}
};
void StatePatternTest()
{
Creature creature;
creature.greet();
creature.kiss();
creature.greet();
}