状态模式(state):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑化。
模式实现:
[code]class Context;
class State{
public:
virtual void Handle(Context *pContext) = 0;
};
class ConcreteStateA: public State{
public:
virtual void Handle(Context *pContext){
std::cout << "I'm concretestateA.\n";
}
};
class ConcreteStateB: public State{
public:
virtual void Handle(Context *pContext){
std::cout << "I'm concretestateB.\n";
}
};
class Context{
public:
Context(State *state):pState(state){}
void Request(){
if(pState){
pState->Handle(this);
}
}
void ChangeState(State *pstate){
pState = pstate;
}
private:
State *pState;
};客户端
[code]int main(){
State *pState = new ConcreteStateA();
Context *context = new Context(pState);
context->Request(); //Output: I'm concretestateA.
State *pState2 = new ConcreteStateB();
context->ChangeState(pState2);
context->Request(); //Output: I'm concretestateB.
if(pState){
delete pState;
pState = NULL;
}
if(pState2){
delete pState2;
pState2 = NULL;
}
if(context){
delete context;
context = NULL;
}
return 0;
}以上就是C++设计模式浅识状态模式的内容,更多相关内容请关注PHP中文网(www.php.cn)!
系统介绍 45°C 商城系统,以 Thinkphp5.0 + Uniapp + Layui2.9 + Vue 为技术基石,精心打造出的全新 MINI 商城应用。其功能覆盖全面,无论是 PC 商城、H5 商城,还是公众号商城、微信小程序以及抖音小程序的制作都能完美胜任。采用标准系统结合插件模式开发,用户能够极为便捷地定制专属的个性模块。整个系统,从程序设计到 UI 呈现,都秉持着一贯的小而美理念。程
0
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号