知识卡片

超状态收纳共享行为

普通读书笔记卡 · 1949.e

内容

当若干状态共享相同的转换或内部活动时(如一组子状态都要响应同一个cancel事件跳出),与其在每个子状态重复画一遍,不如把它们嵌套进一个超状态,把共享的转换或活动画在超状态层级一次,所有子状态自动继承。这不只是省画图的功夫:它把这组状态共同响应哪些事件的设计意图显式表达出来,读图者能一眼看出哪些行为是整组共有的、哪些是某个子状态独有的,不必逐个比对转换列表才能发现规律。

参考来源

- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第10章《状态机图》(源文件:_epub-src/EPUB/9.xhtml) - 结论依据:原文说明"通常,你会发现若干状态共享共同的转换和内部活动。在这些情况下,你可以把它们当做子状态,把共享行为移进超状态……要是没有超状态,你将不得不为……所有3个状态都画一个cancel转换"。 - 原始内容:通常,你会发现若干状态共享共同的转换和内部活动。在这些情况下,你可以把它们当做子状态,把共享行为移进超状态,如图10.4所示。要是没有超状态,你将不得不为Enter Connection Details状态里面的所有3个状态都画一个cancel转换。