设计模式总篇-状态模式

#define __CRT_SECURE_NO_WARNINGS
/*
@作者:莫忘输赢
@时间:
2020/02/20 21:27
@版本:v1

@状态模式
@作用:
根据不同的状态做相应的事情
*/
#include<iostream>
//#include<vld.h>

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

		}
		else
		{
			std::cout << "不行了,该睡觉了" << std::endl;
		}
	}
};

int main(int argc, char **argv)
{
	Work *myWork = new Work();
	ForenoonState * fState = new ForenoonState();
	NoonState *nState = new NoonState();

	myWork->hour = 9;
	fState->WriteProgram(myWork);

	myWork->hour = 23;
	nState->WriteProgram(myWork);

	delete nState;
	delete fState;
	delete myWork;

	return 0;
}
发布了141 篇原创文章 · 获赞 1 · 访问量 5318

猜你喜欢

转载自blog.csdn.net/wjl18270365476/article/details/104419029