设计模式学习-----状态模式

2014-11-24 10:43:52 · 作者: · 浏览: 0

状态模式

GOOD:当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,可考虑用到状态模式。

[html]
#include
using namespace std;

class Work;
class ForenoonState;
class NoonState;

class State
{
public:
virtual void WriteProgram(Work* w)=0;
};

class Work
{
private:
State* current;
public:
double hour;
public:
Work();
void SetState(State* temp)
{
current =temp;
}
void Writeprogram()
{
current->WriteProgram(this);
}

};

class NoonState :public State
{
public:
virtual void WriteProgram(Work* w)
{
cout<<"execute"< if((w->hour)<13)
cout<<"还不错啦"< else
cout<<"不行了,还是睡觉吧"< }
};

class ForenoonState : public State
{
public:
virtual void WriteProgram(Work* w)
{
if((w->hour)<12)
cout<<"现在的精神无敌好"< else
{
w->SetState(new NoonState());
w->Writeprogram(); //注意加上这句
}
}
};


Work::Work()
{
current = new ForenoonState();
}

//客户端:
int main()
{
Work* mywork=new Work();
mywork->hour=9;
mywork->Writeprogram();
mywork->hour = 14;
mywork->Writeprogram();
return 0;
}