灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3671回复:0

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

楼主#
更多 发布于:2012-12-13 14:41

状态模式


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
游客

返回顶部