[答疑]把缺省伪状态和历史伪状态合并可行吗

DDD领域驱动设计批评文集

做强化自测题获得"软件方法建模师"称号

《软件方法》各章合集


veggieg 2026-4-29 15:05

这样画状态图

没有历史的时候,会转到H指向的B1,B1刚好是B的初始态,我省去黑点指向B1不画,统一用H,这样可行吗?

UMLChina潘加宇

可行是可行,只要能防住不让后面的人把迁移指向B的边界,就是合法的。

(也可以修改规范,既然缺省大黑点没有了,就可以把指向B的边界的迁移解释为指向H,然后把图上所有指向H的迁移改为指向B的边界。)

不过,和原来的意思有差别。就像我每餐不吃两碗米饭了,吃两个馒头行不行,当然行,但不是一个东西。

我把缺省子状态补上,对比一下:

最开始的时候是一样的,没有历史就迁移到B1。

但下次从B退出,就有历史了,那么每次进入B,都要回到离开前所在的子状态。如果这是你想要的,那就没问题。

有个麻烦:如果想下次进入B时迁移到B1,就得在离开前把状态转到B1再离开,因为这时B1才成为历史子状态。

一个值得画的状态机,进入一个状态和离开一个状态的事件可能会有多个(也就是说,图上这样画A、转A、B、转B属于伪创新的一一对应刷废话),是不是通过每一个事件迁移到B时,都希望转到历史子状态,就难说了。

相关推荐
iCxhust5 小时前
先想好如何测试:让测试驱动你的程序设计
运维·服务器·软件工程·编程的艺术
对讲机数码科普7 小时前
从电路原理到协议栈:模拟对讲机与数字对讲机的技术内核拆解
运维·网络·架构·软件工程
谢亮_vipxieliang11 小时前
2026 年开发工作流全景:工具链与方法论
软件工程
AOI小白新手上路11 小时前
深度学习项目模板与机器学习软件工程(MLSE)实践笔记
深度学习·机器学习·软件工程
抓到一只狗1 天前
系统分析师——统一建模语言
软件工程·uml·类图·用例图·系统分析师·顺序图·高级软考
cyf311 天前
程序员到架构师工作和生活反思
程序员·生活·架构师
guslegend2 天前
从需求分析到 Spec-Kit 落地:三种思维、施工方案与规格驱动开发
aigc·软件工程·需求分析·ai编程·spec-kit
llilian_162 天前
失真度校准装置有哪些重点指标?失真度测量仪校准
功能测试·嵌入式硬件·51单片机·软件工程
谢亮_vipxieliang3 天前
软件工程的全景地图:从知识体系到技术栈
软件工程
ggb喔3 天前
52pojie 的桌面工具:为什么它们总在高分屏上模糊、资源管理器重启后失效
windows·python·网络安全·软件工程·个人开发·用户界面·用户体验