我真的对类图产生了偏执.假设我有一个名为Investigation的类.在该类中有一个名为share的操作,它允许用户共享调查.假设我还有一个名为User的类.因为用户可以共享调查,类User是否也应该具有名为share的操作?我真的很困惑.协会会解决这个问题吗?

推荐答案

如果UserInvestigation之间存在 struct semantic relationship,则需要UserInvestigation之间的关联,例如,如果用户分配了调查,如果调查归某些用户所有,或者如果用户有要浏览的关联列表.

如果有一种短暂的关系,例如,如果用户可以浏览所有调查,并不时决定共享一项调查,而不保留任何痕迹,则没有必要进行关联.

现在,如果Investigationshare操作,User可以简单地使用该操作,无论是否存在与调查相关的操作.

然而,如果另一个类需要告诉User共享调查(例如,用户界面的一个类),那么问题就出现了.在这种情况下,您可能会对User进行share运算感兴趣.但如果你这样开始,你需要看看principle of least knowledge,因为这样的设计可能会导致很多隐藏的耦合,这使得软件在future 的发展中很难维护.

Java相关问答推荐

Jooq隐式地将bigint转换为数字,并且索引不起作用

Java 22模式匹配不适用于记录模式匹配.给出汇编问题

为什么接口中的主函数而不是类中的主函数在Java 17中编译和运行没有问题?

如何为具有多对多关系的实体的给定SQL查询构建JPA规范?

Annotation @ Memphier无法正常工作,并表示:class需要一个bean,但找到了2个bean:

Java JAR环境(JRE)是否支持模块?

使用Testcontainers与OpenLiberty Server进行集成测试会抛出SocketException

Spring Boot 3.2.2中的@Inject和@Resource Remove

无法初始化JPA实体管理器工厂:无法确定为Java类型<;类>;推荐的JdbcType

类型集合的Jackson JsonNode:类型引用的对象读取器应该是Singleton吗?

使用Class.this.field=Value初始化构造函数中的最后一个字段会产生错误,而使用this.field=Value则不会

使用htmlunit和java单击按钮

我如何为我的Java抵押贷款代码执行加薪操作(&Q)

如何使用MapStrCut转换双向链接

try 使用预准备语句占位符获取信息时出现Try-With-Resources错误

基于Java中mm/dd/yy格式的最近日期对数组列表进行排序

Cucumber java-maven-示例表-未定义一步

没有Google Play服务,Firebase Auth无法工作

Spring Mapstruct如何获取Lazy初始化实体字段的信息?

Java中计算大n和k值模10^9+7的二项式系数的乘法公式输出错误值