跳转到内容
新建笔记

Mermaid 类图

类图描述系统的静态结构:有哪些类型、各自承担什么职责,以及类型之间如何依赖。不要把每个字段和私有辅助方法都搬进图中。

classDiagram
class Task {
+String id
+TaskState state
+start() void
+complete(result) void
}

常见可见性:+ 公有、- 私有、# 受保护、~ 包内可见。返回类型写在方法签名末尾。

关系Mermaid含义
继承`Base <— Derived`Derived 是 Base 的一种
实现`Interface <.. Implementation`类型实现接口契约
组合Owner *-- PartPart 生命周期由 Owner 管理
聚合Whole o-- PartWhole 引用可独立存在的 Part
关联A --> BA 持有或导航到 B
依赖A ..> BA 临时使用 B

只有在生命周期语义明确时才区分组合和聚合。无法确认时,用普通关联或依赖更诚实。

classDiagram
class TaskService {
+execute(taskId) Result
}
class TaskRepository {
+find(taskId) Task
+save(task) void
}
class Task {
+String id
+TaskState state
+complete(result) void
}
class Result
TaskService --> TaskRepository : loads and saves
TaskRepository o-- "0..*" Task
Task *-- "0..1" Result

关系标签写“为什么依赖”,不要只重复类型名称。多重性放在关系端点附近,例如 "1"、"0..1"、"0..*"。

  1. 图是否只表达一个层级和一个问题?
  2. 依赖箭头方向是否与代码中的调用或持有关系一致?
  3. 组合关系是否真的意味着共同生命周期?
  4. 名称是否与代码、接口和正文一致?
  5. 删除实现细节后,设计意图是否仍然清晰?

来源:CSDN 原文,首次发布于 2025-03-28。