goback add

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

5019 点击·0 回帖
灯火互联
楼主

状态模式


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





[html]
#include <iostream>
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"<<endl;
       if((w->hour)<13)
           cout<<"还不错啦"<<endl;
       else
           cout<<"不行了,还是睡觉吧"<<endl;
   }
};

class ForenoonState : public State
{
public:
   virtual void WriteProgram(Work* w)
   {
       if((w->hour)<12)
           cout<<"现在的精神无敌好"<<endl;
       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;
}

喜欢0 评分0