You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何在PlantUML组件图中添加所需/提供接口?

嘿,我来帮你搞定PlantUML组件图里的所需/提供接口问题!其实PlantUML完全支持这个需求,只是可能文档里的表述没那么直白,我给你拆解两种核心用法,还有进阶的端口写法,保证清晰易懂:

1. 定义「提供接口」(Provided Interfaces)

提供接口是组件对外暴露的服务,简单来说就是这个组件能给其他组件提供什么能力。你可以先用<<interface>>标记接口,再用实线实现关系(--|>)把组件和接口关联起来。

示例代码:

@startuml
interface PaymentService <<interface>> {
  + processPayment(amount: double): boolean
}

component OrderProcessor {
  + createOrder()
}

OrderProcessor --|> PaymentService : implements
@enduml

这里OrderProcessor组件通过implements关系实现了PaymentService接口,意味着它对外提供支付处理的服务。

2. 定义「所需接口」(Required Interfaces)

所需接口是组件运行时依赖的外部服务,也就是这个组件需要调用其他组件的某个接口才能工作。PlantUML里用虚线依赖箭头(..>)来表示这种关系,配合uses说明语义。

示例代码:

@startuml
interface InventoryService <<interface>> {
  + checkStock(productId: string): int
}

component OrderProcessor {
  + createOrder()
}

OrderProcessor ..> InventoryService : uses
@enduml

这段代码表示OrderProcessor组件需要依赖InventoryService的库存查询能力,才能完成订单创建流程。

进阶:用端口(Port)明确区分所需/提供

如果你的组件图比较复杂,想更清晰地标记接口的方向,推荐用端口来定义。端口可以明确标注<<provided>>或<<required>>,再和对应组件的端口连接,语义会更直观。

示例代码:

@startuml
interface PaymentService <<interface>>
interface InventoryService <<interface>>

component OrderProcessor {
  port <<provided>> pay: PaymentService
  port <<required>> stock: InventoryService
}

component PaymentGateway {
  port <<provided>> process: PaymentService
}

component Warehouse {
  port <<provided>> check: InventoryService
}

OrderProcessor.pay -- PaymentGateway.process
OrderProcessor.stock ..> Warehouse.check
@enduml

这里OrderProcessor的pay端口是对外提供的支付接口,和PaymentGateway的提供端口用实线连接;stock端口是它需要依赖的库存接口,和Warehouse的提供端口用虚线连接,整个依赖关系一目了然。

另外你还可以给接口或组件加注释,用note left/right of来补充说明,让图的可读性更强。如果还有其他样式或布局上的疑问,随时问就行!

内容的提问来源于stack exchange,提问作者rein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:13:25