一、状态模式
状态模式,允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。它的实现方式和策略模式相似,目的都是对if...else语句进行优化,只不过,策略模式通过外部传入枚举、条件来决定选择哪一种操作方式。策略模式中的枚举、条件相当于状态模式中的状态。状态不需要由外部传入,而是随着自身的操作来自动地变化。

例如类Context 包含以下的流程图,context 有两个方法run 和fallback,四种状态,例如当状态Ready执行一次run操作状态变成了d式,允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。它的实现方式和策略模式相似,目的都是对if...else语句进行优化,只不过,策略模式通过外部传入枚举、条件来决定选择哪一种操作方式。策略模式中的枚举、条件相当于状态模式中的状态。状态不需要由外部传入,而是随着自身的操作来自动地变化。
例如类Context 包含以下的流程图,context 有两个方法run 和fallback,四种状态,例如当状态Ready执行一次run操作状态变成了executing,当再执行run时就变成了完成状态,如果执行fallback就变成了hangup状态。

本例目标是为了展示 2*100 的计算和输出过程。
方法一
enum State{
Ready,
Executing,
Finish,
Hangup
}
class Context{
State state;
int result;
public:
void run(){
if(state == Ready){
result = 2;
state = Executing;
}else if(state == Executing){
result *=100;
state =Finish;
}else if(state == Finish){
cout<<"result:"<<result;
result=0;
state =Ready;
}else if(state ==Hangup){
state = Executing;
}
}
void fallback(){
if(state == Ready){

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



