状态模式例子
来源:互联网 发布:mysql主从复制读写分离 编辑:程序博客网 时间:2024/04/28 16:33
#include <iostream>
using namespace std;
class context;
class Istate
{
public:
void virtual dosomething(context *pHandle) = 0;
};
class stateStart: public Istate
{
public:
void dosomething(context *pHandle);
};
class stateStop: public Istate
{
public:
void dosomething(context *pHandle);
};
class context
{
public:
context(Istate *p)
{
pstate = p;
}
~context()
{
if (pstate != NULL)
{
delete pstate;
pstate = NULL;
}
}
void setState(Istate *p)
{
delete[] pstate;
pstate = NULL;
pstate = p;
}
Istate* getState()
{
return pstate;
}
void request()
{
pstate->dosomething(this);
}
private:
Istate *pstate;
};
void stateStart::dosomething(context *pHandle)
{
cout<<"start play"<<endl;
Istate *p = new stateStop();
pHandle->setState(p);
}
void stateStop::dosomething(context *pHandle)
{
cout<<"stop play"<<endl;
Istate *p = new stateStart();
pHandle->setState(p);
}
int main()
{
stateStart *psstart = new stateStart();
context *pmyContext = new context(psstart);
pmyContext->request();
pmyContext->request();
delete pmyContext;
return 0;
}
using namespace std;
class context;
class Istate
{
public:
void virtual dosomething(context *pHandle) = 0;
};
class stateStart: public Istate
{
public:
void dosomething(context *pHandle);
};
class stateStop: public Istate
{
public:
void dosomething(context *pHandle);
};
class context
{
public:
context(Istate *p)
{
pstate = p;
}
~context()
{
if (pstate != NULL)
{
delete pstate;
pstate = NULL;
}
}
void setState(Istate *p)
{
delete[] pstate;
pstate = NULL;
pstate = p;
}
Istate* getState()
{
return pstate;
}
void request()
{
pstate->dosomething(this);
}
private:
Istate *pstate;
};
void stateStart::dosomething(context *pHandle)
{
cout<<"start play"<<endl;
Istate *p = new stateStop();
pHandle->setState(p);
}
void stateStop::dosomething(context *pHandle)
{
cout<<"stop play"<<endl;
Istate *p = new stateStart();
pHandle->setState(p);
}
int main()
{
stateStart *psstart = new stateStart();
context *pmyContext = new context(psstart);
pmyContext->request();
pmyContext->request();
delete pmyContext;
return 0;
}
0 0
- 状态模式的例子
- 状态模式例子
- 状态模式(state)解析例子
- 状态模式(state)解析例子
- 状态模式(状态变化)
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 网址
- MyEclipse代码格式化
- 士的罚款
- js 执行CMD 命令的方法
- hibernate分页
- 状态模式例子
- windows下使用git管理github项目(入门)
- 易信公众平台开发从入门到精通之开发验证
- JS/JQuery 代码、框架收藏
- 安装WLW实验
- iOS: plist应用实例
- 《Python核心编程》第12章 模块 练习
- oracle scope 用法说明
- 幸福之九——慎言