C++设计模式——状态模式(高屋建瓴)
原网址:https://blog.csdn.net/CoderAldrich/article/details/83183733
#include <iostream>
using namespace std;class Context;class State {public:virtual void Handle(Context *context) = 0;
};class ConcreteStateA : public State {public:virtual void Handle(Context *context) {cout << "I'm concretestateA" << endl;}
};class ConcreteStateB : public State {public:virtual void Handle(Context *context) {cout << "I'm concretestateB" << endl;}
};class Context {public:Context(State *state) : state_(state){}void Request() {if (state_) {state_->Handle(this);}}void ChangeState(State *state) {state_ = state;}private:State *state_;
};int main() {State *state_a = new ConcreteStateA();State *state_b = new ConcreteStateB();Context *context = new Context(state_a);context->Request();context->ChangeState(state_b);context->Request();delete context;delete state_a;delete state_b;
}
运行结果:
I’m concretestateA
I’m concretestateB
C++设计模式——状态模式(高屋建瓴)相关推荐
- Python设计模式-状态模式
Python设计模式-状态模式 代码基于3.5.2,代码如下; #coding:utf-8 #状态模式class state():def writeProgram(self,work):raise N ...
- Java 设计模式——状态模式
概述 很多人在说状态模式的时候总拿策略模式来进行对比,可能他们的类图会有一点类似,可我却不认为他们有多么相像.你可以阅读<Java设计模式--策略模式>这篇博客,并与本文对比,以找到蛛丝马 ...
- 设计模式状态模式uml_UML的完整形式是什么?
设计模式状态模式uml UML:统一建模语言 (UML: Unified Modeling Language) UML is an abbreviation of Unified Modeling L ...
- C++设计模式——状态模式
C++设计模式--状态模式 在实际开发中,我们经常会遇到这种情况:一个对象有多种状态,在每一个状态下,都会有不同的行为.那么在代码中我们经常是这样实现的. 1 2 3 4 5 6 7 8 9 10 ...
- Java 有限状态机 (设计模式——状态模式)
Java 有限状态机 (设计模式--状态模式) 编写代码的时候,有时会遇见较为复杂的swith...case...和if...else...语句.这一刻有时会想到状态机,用有限状态机替换swith.. ...
- C++设计模式——状态模式(state pattern)
一.原理讲解 别名状态对象(object for state). 1.1意图 允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类. 1.2应用场景 一个对象的行为取决于它的状态,并 ...
- 设计模式——状态模式详解
0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...
- 大话设计模式—状态模式
在状态模式(State Pattern)中,类的行为是基于它的状态改变的.这种类型的设计模式属于行为型模式.我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象. 大话设 ...
- C++设计模式-状态模式
目录 基本概念 代码与实例 基本概念 状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了其类: 状态模式的好处: 1. 将与特定状态相关的行为局部化,并且将不 ...
最新文章
- [分享]3秒钟让你的QQ号IP跑到任何地方,哪怕是美国白宫!
- Luogu 1070 道路游戏
- IOS 浏览器端overflow:scroll overflow:auto元素无法滑动bug解决方法整理
- JavaScript异步基础
- 无人机、IoT 设备都有漏洞?专访以色列老牌安全公司 Check Point|拟合
- db2存储过程 可以使用游标循环嵌套吗_DB2存储过程使用动态游标的例子
- linux6同步时间,centos 6.x 同步网络时间
- pyjion python3.6_pyjion python3.6
- 第一阶段意见汇总以及改进
- bzoj4546-codechef XRQRS(可持久化Trie)
- 实战案例:探索星巴克的世界分布
- 离线发布bolg----使用Windows live writer客户端来发布CSDN的博客文章
- iconfont-阿里巴巴矢量图标库使用教程
- postgresql 查询sql字符串拼接相关
- Linux版本怎么设置指纹,Linux上使用Thinkpad指纹识别
- 电脑解锁后黑屏有鼠标_电脑开机后黑屏只有一个鼠标箭头怎么办_win10屏幕黑屏就剩鼠标如何修复...
- 怎么查看linux系统硬盘,查看Linux磁盘空间的八大方法
- mhl数据线_mhl接口有什么作用
- 【Git从入门到精通】Git入门
- 超链接的5种表现形式(用法)
热门文章
- 被误解的 Node.js
- Unity报错: Broken text PPtr in file(xxx). Local file identifier (xxx) doesn‘t exist
- n维椭球体积公式_中考物理各种公式单位换算总结
- BUUCTF:[CSCCTF 2019 Qual]FlaskLight
- 毕业两年,洋洋洒洒千字文
- 阿里云服务器 安装下载工具aira2步骤
- Microsoft Office 2016出现Excel文件打不开解决方法
- python商业数据分析_Python数据分析案例—商圈客流量特征分析
- php懒惰模式,PHP正则贪婪/懒惰匹配模式
- python返回索引值_python 返回列表中某个值的索引方法