历史状态

历史状态是一个与组合状态中区域有关的便利的概念,通过这个概念一个区域可以保持自己前一次退出时的状态构成的痕迹。如果愿意,就可以以一种容易的方式在下次状态被激活,或者存在一个返回历史状态的局部迁移时恢复到同样的状态构成(例如从中断处理返回)。这可以通过使迁移终止于一个区域中的希望类型的历史伪状态而简单地完成。这种方式的优点在于,当用户有需求时不需要准确地保持状态构成的痕迹。结果就是更加简单的状态机模型。

深历史/浅历史

有两种类型的历史伪状态。深历史(deepHistory)代表的是包含它的区域的完整的状态构成。其效果使终止于deepHistory历史伪状态的迁移产生的效果等同于如同迁移终止于被保存的状态构成的最里层中的某个子状态,也包括沿途遇到的所有入口行为的执行。浅历史(shallowHistory)代表的是返回最近状态构成的最上层子状态,进入时适用于缺省的进入规则。

缺省历史状态

有一种情况,状态没有被进入过(即不存在之前的历史)或者已经到达了终止状态,如果存在与终止于历史伪状态上的迁移,可以使用缺省历史机制使之强制迁移到一个特定的子状态。这是一个起始于历史伪状态,终止于包含该历史伪状态的区域中的一个特定顶点(缺省历史状态)的迁移。这个迁移只有执行到历史伪状态而且状态从来没有被激活过的情况下才会发生。否则进入区域的适当的历史入口行为将被执行(见上文)。如果没有定义缺省的历史迁移,那么标准的区域缺省入口行为会像后面将要解释的那样被执行。

作者著作介绍

《实战Python设计模式》是作者出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

EAUML日拱一卒 历史状态相关推荐

  1. EAUML日拱一卒 总目录

    用例图 EA&UML日拱一卒 用例图开篇 EA&UML日拱一卒 用例包含关系 EA&UML日拱一卒 用例泛化关系 EA&UML日拱一卒 用例扩展关系 类图 EA& ...

  2. EAUML日拱一卒--序列图(Sequence Diagram)::交互和交互使用

    画时序图就和写作文一样,经常会遇到一发而不可收的情况,结果就是得到一个巨大的时序图.这种情况下,作者首先会因为完成了一件大工程而感到自豪,可是一旦他把完成的时序图拿给别人看或者是需要维护的时候就开始意 ...

  3. EAUML日拱一卒--序列图(Sequence Diagram)::生命周期

    在实际的程序中,创建对象,删除对象这样的控制对象生命周期的处理可以说比比皆是. 创建对象 下面以图形编辑软件中用户双击鼠标创建新对象为例说明. 处理流程: 用户双击鼠标. Framework生成QMo ...

  4. EAUML日拱一卒-微信小程序实战:位置闹铃 (6)-播放音频

    昨天停更了一天,不是作者偷懒,而是掉到了一个坑里.本来以为播放音频很简单,但是还是遇到的各种问题,比如: 1)小程序无法播放手机存储目录中的文件,只能播放网上的或者是小程序暂存的文件. 2)播放暂存文 ...

  5. EAUML日拱一卒-活动图::OMG UML2.5中文译文 16.12 Expansion Regisons

    16.12.1 Summary(概要) An ExpansionRegion is a StructuredActivityNode that executes its contained eleme ...

  6. EAUML日拱一卒-微信小程序实战:位置闹铃 (5)-显示所在位置的信息

    假设我们指定了多个监控点,接下来的需求就是给每个监控点取名字.如果是手动输入的话,会比较麻烦.所以位置闹铃再向前走一步,从地图上取得监控点所在位置的信息作为监控点的名称. 画面说明 当我们选定监控点以 ...

  7. EAUML日拱一卒 时序图入门

    有些文章将TimingDiagram翻译为定时图,但总是差那么点意思.经过权衡,本文将TimingDiagram译为时序图.对于本系列早期文章中将SequenceDiagram翻译成时序图的情况,将来 ...

  8. EAUML日拱一卒 用例扩展关系

    用例扩展关系 下面是ULM2.5.1中对用例扩展关系的解释. 扩展是从扩展用例到被扩展用例的关系,它指定扩展用例中定义的行为如何以及何时可以插入到被扩展用例.扩展发生在被扩展用例中定义的一个或多个特定 ...

  9. EAUML日拱一卒 用例包含关系

    包含关系 包含(Include) 是两个用例之间的有向关系,表示被包含的用例的行为被插入到包含用例的行为中. 包含关系可在两个或多个用例的行为存在共同部分时使用.通常情况下,这个公共部分被提取到一个单 ...

最新文章

  1. java bean销毁,销毁Spring Bean的三种方法
  2. 基于ESP8266WiFi步进电机控制
  3. stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)
  4. Sphinx-安装和配置
  5. python 生成html文件浏览器_Handout库:能将python脚本转化为html展示文件
  6. 鲲鹏性能优化十板斧(四)——磁盘IO子系统性能调优
  7. 3. Mac 下安装python
  8. jquery检测input变化_检测jQuery中的输入变化?
  9. 入门 | 机器学习中常用的损失函数你知多少?
  10. 富士康给员工分红 平均每人33万元
  11. 解决办法:Eclipse卡死在“revert resources”,进度一直为0
  12. 【easyui】之DataGrid数据显示
  13. Java8新特性之空指针异常的克星Optional类
  14. 华为强推996工作制,程序员们的变态加班何时休?
  15. java 返回ro,错误retrofit rxjava优雅的处理服务器返回异常、错误
  16. bugfix: 待机休眠arm电压保持在1.2v(希望降到1v)
  17. HTML源码小游戏——坦克大战、飞机大战、捕鱼达人
  18. 计算机械功的公式,机械功的计算
  19. cython,加速python,保护代码(3):扩展文件 .pxd
  20. Zabbix icmp pinger processes more than 75% busy

热门文章

  1. 【遇见大咖】测试界:你的年终奖有多少?
  2. 按学号和姓名进行查询c语言,数据库实验4 数据查询(答案)
  3. 用python刷微信阅读_使用python让微信读书自动翻页
  4. 四.Windows基础
  5. 什么叫视听思维,如何训练视听思维?(周传基)
  6. Ubuntu下安装adobe reader
  7. angular实现瀑布流
  8. Mac版本Redis可视化工具-Redis-Desktop-Manager
  9. 财富自由:金钱、注意力、时间、认知,你会怎么排?
  10. Zotero+Obsidian+Bookxnote联动让文献阅读丝滑般体验