类图是什么
类图描述类、属性、操作以及类之间的关系,是结构建模中最常用的图。属性语法为“可见性 名称 : 类型 [多重性] = 默认值”,可见性符号 + 表示公开、- 表示私有、# 表示受保护、~ 表示包内可见,静态成员加下划线。类图用于表达系统结构与其稳定性,适合评审领域模型与接口结构,但不必追求与代码逐行同步。
Mermaid 类图示例
Mermaid 类图示例
classDiagram
class Order {
+String orderId
-Money total
+submit() void
}
class OrderLine {
+String sku
+int qty
}
Order "1" --> "1..*" OrderLine : contains基本信息
| 属性语法 | 可见性 名称 : 类型 [多重性] = 默认值 |
|---|---|
| 操作语法 | 可见性 名称(参数) : 返回类型 |
| 关系类型 | 关联、聚合、组合、泛化、实现、依赖 |
| 常见用途 | 领域模型、数据模型草稿、接口结构评审 |
| 工具 | PlantUML、Mermaid、StarUML、draw.io |
关系与取舍
| 关系 | 符号 | 语义与注意 |
|---|---|---|
| 关联 | 实线 | 长期引用关系,可加多重性 |
| 聚合 | 空心菱形 | 整体与部分可独立存在,语气较弱 |
| 组合 | 实心菱形 | 部分随整体销毁,删父即删子 |
| 泛化 | 空心三角实线 | 继承关系,过多继承会僵化结构 |
| 实现 | 空心三角虚线 | 实现接口,用于表达可替换的契约 |
| 依赖 | 虚线开放箭头 | 临时使用,改动风险传导的常见通道 |
典型使用场景
- 领域建模评审:用类图确认实体、值对象与聚合的关系
- 接口设计:表达服务间的数据结构与契约字段
- 重构前梳理:把现有类关系画出来,找到循环依赖与过深继承
- 新人上手:用一张图说明核心概念与职责划分
- 数据库设计草稿:从逻辑类图过渡到物理表结构
- 评审遗留代码:把隐式依赖显式化,识别高低耦合模块
类图用于沟通结构而非生成全部代码;与代码同步时优先保证关键类与关系准确,属性列表可按需省略。
继承层次超过三层通常意味着设计需要调整,优先用组合与接口替代继承,降低结构僵化风险。