知识卡片
并发正交状态
内容
当一个对象的状态实际由几个互不相关的维度共同决定时(如闹钟同时有CD/收音机选择和当前/闹钟时间显示两个独立维度),把它们塞进一张状态图会迅速变得混乱、难以随状态数增长而维护。解法是把这些正交的维度拆成各自独立、并发运行的状态图区域,分开画反而清晰得多——这是应对状态组合爆炸的核心手段。
参考来源
- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第10章《状态机图》(源文件:_epub-src/EPUB/9.xhtml)
- 结论依据:原文说明"状态可以被分解成若干正在并发运行的正交状态图……选择CD/收音机和当前/闹钟时间是正交的选择。如果你想要用非正交的状态图表达,这张图可能会非常乱……把两个区域的行为分离到各自的状态图中,就清晰得多了"。
- 原始内容:状态可以被分解成若干正在并发运行的正交状态图。图10.5展示了一个简单小巧的闹钟……选择CD/收音机和当前/闹钟时间是正交的选择。如果你想要用非正交的状态图表达,这张图可能会非常乱,而且当需要更多状态时,就会失控。