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

状态模式

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

设计模式学习-----状态模式_第1张图片

#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;
}


//转载请注明,文章来自:http://blog.csdn.net/windows_nt


 

你可能感兴趣的:(设计模式学习-----状态模式)