属性与操作
只列出能解释职责或契约的字段与方法。
软件结构建模
用 Mermaid 类图评审软件类型及其关系。添加关键成员,区分继承与所有权,并标注多重性,再导出用于设计讨论的模型。
参考下方订单与订单项示例,通过预览检查箭头方向、成员可见性和所有权关系。
类图描述软件类型与行为。如果主要讨论持久化实体、键和数据库关系,使用 ER 图更合适。
只列出能解释职责或契约的字段与方法。
用 +、-、# 和 ~ 表示公开、私有、受保护和包级可见性。
区分泛化和实现关系,避免混淆子类继承与接口实现。
选择组合、聚合或关联,并说明关系两端允许多少个对象。
先明确设计问题,不需要把代码中的全部成员复制到类图。
声明 classDiagram,添加相关类,并在类块内列出关键属性或方法。
根据设计选择关系符号,需要表达数量约束时添加带引号的多重性。
在预览中逐条检查箭头与所有权关系,再导出或保存供评审使用。
带括号的成员表示操作,返回类型写在右括号之后。需要表达契约时,在成员前添加可见性标记。
classDiagram
class Invoice {
+String id
-Decimal balance
+pay() Receipt
}Base <|-- Child 的三角形指向基类。接口实现使用虚线关系,并显式标记接口。
classDiagram
class PaymentMethod {
<<interface>>
+pay() Receipt
}
PaymentMethod <|.. CardPayment
LineItem <|-- DigitalLineItem实心菱形表示组合,空心菱形表示聚合,菱形位于整体的一端。虚线依赖箭头表示一个类型使用另一个类型。
classDiagram
Order *-- LineItem : 包含
Team o-- Member : 分组
CheckoutService ..> PaymentMethod : 使用数量约束用引号包住。这里每张订单属于一个客户,客户可以没有订单,也可以有多张订单。
classDiagram
Customer "1" --> "0..*" Order : 下单
Order "1" *-- "1..*" LineItem : 包含Order 包含一个或多个 LineItem,DigitalLineItem 继承 LineItem 并增加下载地址,各类只列出解释模型所需的成员。
classDiagram
class Order["订单"] {
+String id
+OrderStatus status
+total() Decimal
}
class LineItem["订单项"] {
+String sku
+int quantity
+subtotal() Decimal
}
class DigitalLineItem["数字订单项"] {
+String downloadUrl
}
Order "1" *-- "1..*" LineItem : 包含
LineItem <|-- DigitalLineItem三角形指向父类或基类。Base <|-- Child 表示 Child 继承 Base。
在接口声明中添加 <<interface>>,并使用实现关系,例如 PaymentMethod <|.. CardPayment。
组合用实心菱形表达较强的整体与部分所有权,聚合用空心菱形表达较弱的整体与部分关系。请按实际生命周期选择,不要把每个集合都视为组合。
在两端写带引号的多重性,例如 Customer "1" --> "0..*" Order。如果至少需要一个关联对象,则使用 1..*。
Mermaid 通过括号区分操作。属性声明不带括号,操作可写成 method() ReturnType。
在连线后写冒号和简短标签,例如 Order *-- LineItem : 包含。用动词解释关系,多重性仍写在关系两端。
深入比较
了解 Mermaid 适合轻量结构说明的场景,以及何时需要 PlantUML 更完整的 UML 建模能力。
阅读类图对比指南 →