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

如何在UML中对用户的自屏蔽关系进行建模?

用户自屏蔽关系的UML建模方案

结论:不需要单独创建BlockedUser类

自屏蔽本质是用户对象之间的关联关系(包括自身与自身的关联),而非需要派生新的类。以下是两种合理的建模方式:

1. 自关联(带角色与多重性)

直接在User类之间建立关联,明确双方角色和多重性:

  • 单向关联:User(角色:blocker,多重性:0..*)指向User(角色:blocked,多重性:0..*)
  • 说明:一个用户可以屏蔽多个用户(包括自己),同时也可以被多个用户(包括自己)屏蔽
  • 如果需要记录屏蔽的额外信息(比如屏蔽时间、原因),可以把关联升级为关联类(命名为BlockRelation),添加blockTime、reason等属性来存储这些细节。

2. 类内属性存储屏蔽列表

在User类中直接添加属性来维护屏蔽关系:

  • 添加属性:blockedUsers: List<User>,多重性设为0..*
  • 说明:该属性存储当前用户所屏蔽的所有用户集合,集合中可以包含用户自身的实例,以此实现自屏蔽逻辑。这种方式更简洁,适合不需要额外关联属性的场景。

为什么不建议创建BlockedUser类?

BlockedUser本质还是系统中的用户,只是被某个用户(包括自己)加入了屏蔽列表,这属于对象的关联状态,而非新的实体类型。单独创建类会造成结构冗余:

  • 你需要重复或继承User的所有属性和方法,增加维护成本
  • 屏蔽状态是动态变化的(用户可以取消屏蔽自己),用类来表示临时状态不符合面向对象的设计原则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 12:47:05