UML关联链接状态建模:使用关联类记录建立时间是否最优?
关联类用于关联状态建模的可行性分析
首先给出明确结论:绝大多数场景下,关联类就是实现该需求的最优方案。
核心原因如下:
- 普通的二元关联仅能表达两个类的映射关系,无法承载「关联本身的属性」。你需要记录的链接建立时间戳,不属于两个关联类任何一方的固有属性,硬塞到任意一个类里都会违反单一职责原则,后续如果要新增关联失效时间、关联创建来源、关联有效性状态这类字段,代码维护成本会陡增。
- 关联类本身就是UML规范中专门为这类场景设计的建模元素,落地到代码实现也非常直观:比如你有
ClassA和ClassB两个类,直接创建关联类ClassAClassBRelation,内部存储aId、bId、createTimestamp以及其他关联相关的属性即可,查询、修改关联状态时直接操作关联类实例,逻辑清晰,耦合度极低。 - 如果你的两个类是多对多关联,关联类更是必选方案:你本来就需要中间实体存储关联映射,直接把关联状态字段放到这个中间实体对应的关联类里,是成本最低、可读性最高的实现方式。
仅有的例外场景:
如果你能100%确定该关联的状态字段永远只有1个,且后续完全不会有扩展需求,也可以临时把状态字段加到关联的其中一方,但这种方案可扩展性极差,只适合非常简单的一次性临时场景,不推荐在正式项目中使用。
内容的提问来源于stack exchange,提问作者Andrea Annibali
相关产品推荐
相关产品推荐

