设计模式-行为-状态
来源:互联网 发布:图片提取文字软件 编辑:程序博客网 时间:2024/06/05 19:34
#pragma once#ifndef STATE_H #define STATE_H class State; class Context { public: Context(State* pState); ~Context(); void Request(); void ChangeState(State *pState); private: State *m_pState; }; class State { public: virtual ~State(){} virtual void Handle(Context* pContext) = 0; }; class ConcreateStateA : public State { public: void Handle(Context* pContext); }; class ConcreateStateB : public State { public: void Handle(Context* pContext); }; #endif
#include "StdAfx.h"#include "state_impl.h"#include <iostream> Context::Context(State* pState) : m_pState(pState) { } Context::~Context() { delete m_pState; m_pState = NULL; } void Context::Request() { if (NULL != m_pState) { m_pState->Handle(this); }} void Context::ChangeState(State *pState) { if (NULL != m_pState) { delete m_pState; m_pState = NULL; } m_pState = pState; } void ConcreateStateA::Handle(Context* pContext) { std::cout <<this<<" Handle by ConcreateStateA\n"; if (NULL != pContext) { pContext->ChangeState(new ConcreateStateB()); } } void ConcreateStateB::Handle(Context* pContext) { std::cout <<this<<" Handle by ConcreateStateB\n"; if (NULL != pContext) { pContext->ChangeState(new ConcreateStateA()); } }
// State.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "state_impl.h"#include <stdlib.h>//允许一个对象在其内部状态改变时改变它的行为int _tmain(int argc, _TCHAR* argv[]){Context *pContext = new Context(new ConcreateStateA); pContext->Request(); pContext->Request(); pContext->Request(); delete pContext; system("pause");return 0;}
阅读全文
0 0
- 设计模式-行为-状态
- 设计模式---行为类型---状态
- 设计模式--行为模式--状态模式--Java
- 设计模式 - 行为型模式 - 状态模式
- 设计模式 行为模式之状态模式
- 设计模式之行为模式---状态模式
- 设计模式->行为型模式->状态模式
- 设计模式--行为型--状态模式
- 设计模式22:状态模式【行为型】
- 设计模式-行为型-状态模式(State)
- [设计模式-行为型]状态模式(State)
- 行为设计模式---状态模式(State)
- 设计模式-行为型之状态模式
- 【设计模式】行为模式之State状态
- 行为型设计模式-状态模式
- State 状态(行为型设计模式)
- 设计模式-行为性设计模式 状态模式 State
- [设计模式]状态模式(State)---状态变 行为变
- CSS Flexbox 布局
- 背包九讲——多重背包
- HDU-1003 Max Sum(经典DP)
- Linux/Ubuntu下UGO及ACL权限管理
- 数据结构实验之链表六:有序链表的建立
- 设计模式-行为-状态
- 大学生职业规划书
- BFPRT算法
- 聪聪和可可(记忆化dp+数学期望)
- Linux关于文件处理命令
- transfer learning
- 设计模式-行为-策略
- Ubuntu16.04安装caffe
- JAVA7