如何找出 UML 组件图中组件的正确接口?

How to figure out correct interfaces for a component in UML component diagrams?

我对 UML 组件图接口有疑问。我的系统中有一个搜索组件,负责从数据库中搜索一些产品,并将搜索结果 return 提供给用户。据我所知,我以 3 种不同的方式绘制了搜索组件。我想知道哪种方法是正确的,实践中最好的,以及为什么其他方法不正确。

在这种情况下,我认为搜索组件向 User 等其他组件提供 Search interface,他们使用该 Search interface 进行搜索。此外,用户通过 interface 传递搜索参数并通过 interface 获得结果。

在这种情况下,我认为搜索组件提供 Search interface 并且 User 使用 interface 来传递搜索参数。它从数据库中获取数据。然后User组件使用Search result interface得到搜索结果

在这种情况下,我认为 Search component 需要搜索参数来搜索某些内容。所以,它需要搜索参数。因此,我添加了Search params required interface。获取数据后,搜索组件会提供该结果。所以,我添加了 provide interface 命名为 search result.

这些是我对这个搜索组件的看法。我不知道哪一个是正确的。请解释哪一个是正确的,为什么其他的不正确。

谢谢!!!

Lollipops 和 sockets 不告诉什么进出,而是谁提供或需要接口定义。所以,简单地说,第一个变体是正确的。 Search 接口提供了一些 search(...) 产生一些结果的操作。并且数据必须通过 Data 接口提供。该组件的任务就是根据这些接口实现对数据的搜索。

如果您将 «interfaces» 放在 socket/lollipop 附近并相应地绘制 dependency/realization ,将会对您有所帮助。例如像这样: