快速观察:
(1) 请记住,一个类/对象可能会向自己发送消息(“DoSomething”),这使得“替代品”更难以理解。
(2) 使用“alt”时,必须提及条件。“alt”,代表“if-then-else”、“switch-case”以及编程语言中的类似概念。
而那些句子,有条件,必须添加到 UML 图(“[条件]”)。
(3) 在“alt”的每个条件或情况下,可能在几个对象之间有多个消息,或者对它们自己,或者没有(只有“return”箭头)。
..........................................................
.......+---------+..............+---------+...............
.......| Foo |..............| Bar |...............
.......+----+----+..............+----+----+...............
............|........................|....................
..........+-+-+....................+-+-+..................
..........| |......methodX().....| |..................
..........| +------------------->+ |..................
..........| |....................| |..DoSomething()...
..........| |....................| +---+..............
..........| |....................| |...|..............
..........| |....................| |...|..............
..........| |....................| |...|..............
..........| |....................| |<--+..............
..........| |....................| |..................
..+-----+-------------------------------------+...........
..|.alt.|.| |....................| |......|...........
..+-----+-------------------------------------+...........
..|.[option=1].....................| |......|...........
..|.......| |....................| |......|...........
..|.......| |....................| +---+..|...........
..|.......| |....................| |...|..|...........
..|.......| |....................| |...|..|...........
..|.......| |....................| |...|..|...........
..|.......| |....................| |<--+..|...........
..|.......| |<-------------------+ |......|...........
..|.......| |....................| |......|...........
..+-----+-------------------------------------+...........
..|.[option=2].....................| |......|...........
..|.......| |....................| |......|...........
..|.......| |....................| |......|..// The wide bar its kept,
..|.......| |<-------------------+ |......|..// even if there is a
..|.......| |....................| |......|..// previous return arrow
..+-------------------------------------------+...........
..|.[else]|...|....................| |......|...........
..|.......| |....................| |......|...........
..|.......| |....................| |......|...........
..|.......| |<-------------------+ |......|...........
..|.......| |....................| |......|...........
..+-------------------------------------------+...........
..........| |....................| |..................
..........+-+-+....................+-+-+..................
............|........................|....................
............|........................|....................
............X........................X....................
..........................................................
干杯。
PD 有适合猫吃的芝士汉堡或金枪鱼汉堡吗?