substate.cpp

来自「设计模式中的状态模式(state)的程序实现」· C++ 代码 · 共 126 行

CPP
126
字号
#include "StdAfx.h"
#include "substate.h"
#include <iostream>
using namespace  std;

Forenoonstate::Forenoonstate()
{

}

Forenoonstate::~Forenoonstate()
{

}

void Forenoonstate::WriteProgram(work* w)
{
	if(w->GetTime() < 12)
	{
		cout<<"current time :"<<w->GetTime()<<"work hard"<<endl;
	}
	else
	{
		workstate* pState = new NoonState;
		w->SetState(pState);
		w->Writeprogram();
	}
}

NoonState::NoonState()
{

}
NoonState::~NoonState()
{

}

void NoonState::WriteProgram( work* w)
{
	if(w->GetTime()<13)
	{
		cout<<"current time :"<<w->GetTime()<<"hunger,sleeping,have a break"<<endl;
	}
	else
	{
		workstate* pState = new Afternoonstate;
		w->SetState(pState);
		w->Writeprogram();
	}
}
 
Afternoonstate::Afternoonstate()
{

}

Afternoonstate::~Afternoonstate()
{

}

void Afternoonstate::WriteProgram( work* w)
{
	if(w->GetTime()<17)
	{
		cout<<"current time :"<<w->GetTime()<<"good,go on"<<endl;
	}
	else
	{
		workstate* pState = new EveningState;
		w->SetState(pState);
		w->Writeprogram();
	}
}

EveningState::EveningState()
{

}

EveningState::~EveningState()
{

}

void EveningState::WriteProgram( work* w)
{
	if(w->getfinished())
	{ 
		workstate* pState =new SleepState;
		w->SetState(pState);
		w->Writeprogram();
	}
	else
	{
		if(w->GetTime()<21)
		{
			cout<<"current time :"<<w->GetTime()<<"work not be finished,go on"<<endl;
		}
		else
		{	
			workstate* pState = new SleepState;	
			w->SetState(pState);
			w->Writeprogram();
		}
	}
}

SleepState::SleepState()
{

}

SleepState::~SleepState()
{

}

void SleepState::WriteProgram(work* w)
{
	cout<<"current time:"<<w->GetTime()<<"sleep"<<endl;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?