状态模式(状态变化)
#include <iostream>
#include <string>
using namespace std;
//状态模式:状态模式允许一个对象在其内部状态改变的时候改变行为。
//这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行
//为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的
//一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,
//其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的
//子类。当系统的状态变化时,系统便改变所选的子类。
class Work;
class State;
class ForenonnState;class State
{
public:virtual void writeProgram(Work*) = 0;//准柜台的基类,抽象类
};class Work //实施工作的类,根据状态执行不同的操作
{
public:int hour;State *current;Work();void writeProgram(){current->writeProgram(this);}
};class EveningState :public State //晚上状态
{
public:void writeProgram(Work *w){cout << "当前时间: " << w->hour << "心情很好,在看《明朝那些事儿》,收获很大!" << endl;}
};class AfternoonState :public State
{
public:void writeProgram(Work *w){if (w->hour < 19){cout << "当前时间: " << w->hour << "下午午睡后,工作还是精神百倍!" << endl;}else{w->current = new EveningState();w->writeProgram();}}
};class ForenonnState :public State
{
public:void writeProgram(Work *w){if (w->hour < 12){cout << "当前时间: " << w->hour << "上午工作精神百倍!" << endl;}else{w->current = new AfternoonState();w->writeProgram();}}
};Work::Work()
{current = new ForenonnState();
}int mainD()
{Work *w = new Work();w->hour = 21;w->writeProgram();cin.get();return 0;
}
状态模式(状态变化)相关推荐
- 【设计模式】 模式PK:策略模式VS状态模式
1.概述 行为类设计模式中,状态模式和策略模式是亲兄弟,两者非常相似,我们先看看两者的通用类图,把两者放在一起比较一下. 策略模式(左)和状态模式(右)的通用类图. 两个类图非常相似,都是通过Cont ...
- 18State(状态)模式
技术交流QQ群:1027579432,欢迎你的加入! 1.状态变化模式 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?状态变化模式为这一问题提供 ...
- 状态模式的介绍及状态机模型的函数库javascript-state-machine的用法和源码解析
文章大体就两部分: 状态模式 状态机模型的函数库javascript-state-machine的用法和源码解析 场景及问题背景: 我们平时开发时本质上就是对应用程序的各种状态进行切换并作出相应处理. ...
- 读书笔记_java设计模式深入研究 第八章 状态模式 State
1,状态模式:事务有n个状态,且维护状态变化. 2,UML模型: -1,上下文环境Context:定义客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete ...
- c++设计模式之状态模式
一. 状态模式 定义:允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类. 实现方式1: workstate 状态抽象类 workstate1 状态实现类1 workstate2 ...
- php 状态模式,PHP设计模式之状态模式
状态模式从字面上其实并不是很好理解.这里的状态是什么意思呢?保存状态?那不就是备忘录模式了.其实,这里的状态是类的状态,通过改变类的某个状态,让这个类感觉像是换了一个类一样.说起来有点拗口吧,先学习概 ...
- php 状态模式,PHP设计模式(十九)—状态模式 (State Pattern)
状态模式 (State Pattern) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类.其别名为状态对象(Objects for States) (一)为什么需要状态模式 ...
- 2.设计模式中状态模式(对象的行为模式)(Python实现)
1.什么是状态模式? 2.状态模式的设计思想 3.状态模式的代码框架模型 4.分别用框架模型和不用框架模型来处理下面的例子 5.模型说明 6. 应用场景 1.什么是状态模式? 如水一般,状态即事物所处 ...
- 策略模式和工厂模式的区别_java设计模式之状态模式,策略模式孪生兄弟
状态模式 状态模式(State Pattern)中,类的行为是基于它的状态改变的,状态之间的切换,在状态A执行完毕后自己控制状态指向状态B,状态模式是不停的切换状态执行.这种类型的设计模式属于行为型模 ...
最新文章
- sql server 日期
- 边缘计算 — 起源与定义
- 九度OJ最短摘要的生成
- oracle导出表中某天数据命令,Oracle数据库使用命令行导入导出数据表及数据内容(本地、远程)...
- 物流设计大赛优秀作品_中国外运杯第七届全国大学生物流设计大赛案例专家评审会在京召开...
- 计算机等级考试机试试题,计算机等级考试二级VFP机试试题18
- 一个标签的72变,打造一个纯CSS图标库
- Spring Boot整合H2内存数据库配置及常见问题处理
- python显示shape为(224,224,64)的图像?plt.imshow
- vue 中 v-bind 合并行为
- python简单爬虫代码-一则python3的简单爬虫代码
- c语言如何调用三个子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
- Handler与线程通信(二)
- C程序之修改Windows的控制台颜色(转载)
- rocketmq 同步双写
- Java 枚举 ordinal 使用以及介绍
- 中国IT工作者35岁后的发展出路调查报告
- android 24节气及节日,iOS -- 获取24节气和节日
- php钓鱼怎么使用方法,还不会用小药钓鱼的朋友们,请往这里看看!
- 如何轻松搞定 笔记本搜不到WIFI信号问题