球形插座

2005 年 2 月 3 日

UML 2 中出现的一种新符号是插座符号,用于显示类所需的接口。这源于微软推广的“棒棒糖”符号,用于显示类实现多个接口。因此,我可以这样显示 Array 类实现多个接口。

这是一种显示此类事物的有用符号。使用实现箭头会导致更混乱的图表。

类不仅实现接口,还可以认为它们需要接口。假设我编写了一个类,可以提供有关我的数字音乐播放列表的各种信息,例如播放列表的总长度。为了获取有关单个音乐文件的信息,我需要从某个地方获取数据。由于我是一个相当酷的人,我可以从 iTunes 获取它 - 但由于我知道还有其他可能性(例如直接从 mp3 读取),我使用了一个接口,以便我可以轻松地替换另一个实现。

所需的接口符号允许我使用紧凑的插座符号来显示此所需的接口。

由于球形插座彼此非常靠近,因此它们自然地应该配对。因此,我在编写 UML Distilled 时看到的 UML 规范允许它们这样做。

现在,虽然这些 UML 规范允许这样做,但 Bran Selic 友好地告诉我,UML 委员会已决定这是一个错误,你不应该以这种方式使用球形插座符号。球形插座符号仍然存在于 UML 中,但它只能用于复合结构图中的连接器 - 这是一个单独的主题领域。

这就引出了一个问题,即如何显示所需接口和提供接口之间的这种链接。我们在 UML 1 中使用依赖关系来做到这一点。

Jim Rumbaugh 的 参考手册 显示了另一种方法。

对于像这样的示例,我认为我更喜欢 UML 1 样式,因为传递相同含义的符号更少。但是,当你想显示更复杂的东西时,Rumbaugh 样式会很出色,例如多个类实现单个所需接口。

尽管配对的球形插座符号在技术上无效,但我还是喜欢它作为一种显示接口和实现如何连接的方式,因此再次倾向于打破严格的 UML 规则来使用它。在更复杂的情况下,我可能会在球形插座之间使用依赖关系符号,但在发生这种情况时,我更喜欢为接口使用显式的类框。