设计模式C++描述----16.状态(State)模式 (二)

2014-11-24 12:03:49 · 作者: · 浏览: 1
work->SetState(new ActState());
work->Operation();
}
}
};

//吸气状态
class InhaleState: public State
{
public:
void Operation(Work *work) //吸气操作
{
if(work->GetStep() == 1)
{
cout<<"Step : "<GetStep()<<"吸气操作"< }
else
{
State *p = new CompressState();
work->SetState(p);
work->Operation();
}
}
};


//测试代码
int main()
{
State* st = new InhaleState(); //初始状态

Work *work = new Work(st);

for(int i = 1; i < 5; ++i)
{
work->SetStep(i);

work->Operation(); //操作
}

delete work;

return 0;
}
二. 状态模式

定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

结构图:

\


使用范围:

(1)一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。(上面的例子就是这种情况)


(2)一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。

作者 lwbeyond