组件图 – 系统物理结构的“积木说明书” 🧩

244次阅读

一、组件图是啥?—— 系统的“物理积木图”🧱

关键字:组件图、物理结构、模块化单元、接口、可复用性

🧠

前面的类图、顺序图讲的是系统的“逻辑结构”(比如“类怎么设计、对象怎么交互”),而组件图聚焦 系统的“物理结构”:它展示系统由哪些“可独立部署、可复用的模块(组件)”组成,以及这些组件之间如何通过“接口”连接,是系统从“逻辑设计”到“实际落地”的桥梁。

🤖 类比:

如果把系统比作“手机”,组件图就是手机的“拆解图”——展示“屏幕组件、电池组件、芯片组件”等物理模块,以及这些模块通过“充电接口、数据接口”连接的方式。

✍️ 核心作用:

  • 明确系统的物理拆分:把复杂系统拆分为“订单组件、支付组件、用户组件”等可独立开发的模块;
  • 规范组件间的交互:通过“接口”定义组件的调用规则,避免组件间的耦合;
  • 支持团队分工协作:按组件划分开发小组(比如“订单组负责订单组件”);
  • 提升可复用性:组件可单独修改 / 替换(比如把“支付宝支付组件”换成“微信支付组件”,只要接口不变)。

二、组件图的“核心零件”:组件 + 接口 + 端口 🧩

关键字:组件、接口、端口、提供接口、请求接口

👆 1. 组件:系统的“物理模块”

组件是系统中“独立封装、可部署、可复用”的物理单元(比如“订单组件”包含“订单类、订单服务类”等代码文件),用“带小矩形的矩形”表示。组件的特点是“黑箱化”——外部只需要知道它的接口,不需要关心内部实现。

// 订单组件的代码结构(黑箱内部)
// 订单实体类
public class Order {…}
// 订单服务类(提供接口实现)
public class OrderService implements IOrderService {
public Order createOrder(User user) {…} // 实现提供接口的方法
}

🔌 2. 接口:组件的“交互规则”

接口是组件对外提供的“服务契约”,分为两种:

  • 提供接口(小圆圈):组件对外提供的功能(比如“订单组件提供创建订单的接口”);
  • 请求接口(小半圆):组件需要调用的外部功能(比如“订单组件需要调用支付组件的支付接口”)。

接口的作用是“解耦”——只要接口不变,组件内部的代码修改不会影响外部调用者。

// 订单组件的提供接口(IOrderService)
public interface IOrderService {
Order createOrder(User user); // 定义组件对外提供的功能
}

🔘 3. 端口:组件的“接口插座”

端口是组件上的“接口载体”(用“小矩形”表示),一个端口可以绑定多个接口——比如“订单组件的‘业务端口’同时提供‘创建订单’和‘查询订单’的接口”。端口的作用是“分类管理接口”,让组件的接口更清晰。

三、组件图的“内部结构”:组件的“拆分解构”📦

关键字:组件内部结构、子组件、内部接口

📦

复杂组件可以包含“子组件”(比如“旅行系统组件”包含“日程组件、预订组件”),组件的内部结构展示子组件之间的接口调用关系——这相当于“把大积木拆成小积木”,让复杂组件的设计更清晰。

✍️ 实战例子:旅行系统组件的内部结构

“旅行系统组件”包含“Planner(规划子组件)”“Scheduler(日程子组件)”“UpdatPans(更新子组件)”,子组件之间通过内部接口交互(比如“Planner 调用 Scheduler 的日程接口”)。

四、组件图的建模步骤:搭好系统的“积木”📋

关键字:建模技术、识别组件、定义接口、梳理依赖、拆分内部结构

📌 步骤:

  • 识别系统组件:根据业务功能拆分组件(比如“机票预订系统”拆分为“用户交互组件、订单组件、票务组件”);
  • 定义组件接口:为每个组件设计提供接口(对外功能)和请求接口(依赖的外部功能);
  • 梳理组件依赖:用“接口连接”表示组件之间的调用关系(比如“订单组件的请求接口连接支付组件的提供接口”);
  • 拆分复杂组件(可选):对大型组件,展示其内部的子组件及交互关系。

五、组件图的实战价值:大型系统的“落地指南”🚀

🚀

在大型系统开发中,组件图是 团队协作和部署的“核心文档”

  • 开发阶段:按组件划分团队,每个团队只需要实现组件的接口,不用关心其他组件的内部逻辑;
  • 测试阶段:针对组件的接口做“契约测试”,确保组件间的交互符合约定;
  • 部署阶段:组件可独立部署(比如“订单组件部署在服务器 A,支付组件部署在服务器 B”),提升系统的可扩展性。

☁️ 复杂场景:微服务架构的组件图

微服务架构本质上是“组件的分布式部署”——每个微服务就是一个组件,组件图可以直接作为微服务的“架构图”,展示“用户服务、订单服务、支付服务”等微服务的接口和依赖关系,是微服务设计的基础。

正文完
 0