在UML组合结构图中,"端口"的概念是什么?

7
在UML组合结构图中,“port”是什么?如果我想在Java中实现一个“port”,应该怎么做?
4个回答

6
我认为,在像Java这样的面向对象语言中,组合结构图中使用的端口概念(通常)实际上是通过调用包含对象的成员对象的方法来实现的,此前已经对包含对象的方法进行了调用。
这有点像FacadeDelegation模式,只不过包含对象实际上必须“拥有”成员对象。
请参阅Delegation维基百科文章,了解多种语言中的示例实现。
为回答问题的第一部分,引用自UML用户手册(第二版)(尽管与组件有关):
端口是对封装组件的显式窗口。在封装组件中,所有进出组件的交互都通过端口进行。组件的外部可见行为是其端口的总和,不多不少。此外,端口具有标识。
...以及来自UML精简版(第三版):
端口允许您将所需和提供的接口分组为组件与外部世界之间的逻辑交互。

2

1

我认为目前没有Java到组合结构图的映射。通常使用类图到Java的映射(例如代码生成)来创建应用程序的框架,而序列图到Java则用于反转方法流程。

除此之外,所有其他尝试都只是研究项目。Omondo曾尝试从类创建组合结构图,但该端口在将项目转换为Java时没有等效物。


1
当某些外部组件通过端口使用其提供的接口向组件请求服务时,端口将责任委托给特定的内部组件部分,例如Facade或Delegation模式。但是,当组件的部分通过端口使用所需接口请求某些服务时,端口的行为会像存根一样还是以其他方式呈现?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接