State 状态模式
来源:互联网 发布:物流行业的利润率算法 编辑:程序博客网 时间:2024/05/07 16:14
GOOD:当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,可考虑用到状态模式。
例
#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;
}
- State模式 状态模式
- 状态模式(State Pattern)
- 状态(State)模式
- 状态模式(State Pattern)
- 状态模式(State)
- 状态模式(State)
- State(状态)模式
- 状态模式(State)
- State 状态模式
- 状态模式(State Pattern)
- 状态模式(State)
- State(状态模式)
- Java 状态模式(State)
- 17.状态模式--State
- State(状态)模式
- 状态模式(State Pattern)
- 状态(state)模式
- 状态(State)模式
- jfinal笔记
- android include标签
- 无图标apk及调用
- OpenCV特征提取
- CMU老教授对Ph.D的理解
- State 状态模式
- html 页面之间跳转和传值
- 关于tomcat
- 不同版本IE设置焦点抛异常的问题
- 检测程序是否已经启动
- Activity的四种加载模式
- 【linux基础】文件管理
- OpenCV特征提取
- php PDO封装