到目前为止,我们已经讨论了状态图的原理。这些原理对状态图和扩展状态图都适用。第二章后面的部分主要讲述了扩展状态图的扩展功能。我们将围绕这些增强的功能,使你对BetterState Pro的设计能力有很好的了解。
关于这些内容和其他有关扩展状态图特性的完整信息,请参见BetterState Pro用户指南。
设计层次结构
在复杂系统中,可能会有许多独特的系统状态。想在一个单独的图中把它们都画出来,即便可能也是相当困难的。分层结构是公认的设计和管理复杂设计的方法。分层就是把相关的状态放在一起。分层结构帮助人们抽象过程,它是现代计算机软件的基本特性之一。
在BetterState 中,分层表示为把状态放到其他状态内部。图9 是我们所讲述内容的一个例子。在这个例子中,分层的作用是将相关一组状态放在一起。高层的转换如下图所示,高层状态是状态1 或状态2,转换可以实现。如果是状态2,应具体说明是状态3 还是状态4。
在现实世界中,分层是如何应用的呢?让我们复习一下冰激凌机的状态变化的例子。
现在改变我们原来的条件,不仅检查卖了3个冰激凌,还检查在卖了一个或数个冰激凌后又卖了一个冰激凌容器。
图9 有两个子状态的分层状态,其中一个还有额外的子状态
图10 使用分层结构修改后的设计
通过在状态One Sold 和状态Two Sold 外简单的增加一个新状态。我们创建了一个高层状态,它代表冰激凌容器的销售。条件Container Sold 称为高层转换。在本例中,如果高层状态是状态One Sold 或状态Two Sold 并且满足 Container Sold 的条件,高级转换就会发生。它的含义是如果卖出了一个或多个冰激凌,接着又卖出了一个冰激凌容器,系统将转换到Be Happy 状态。