假设我有两个类:一个用于乐队,一个用于 CD。我希望能够轻松访问一个 Band 中的所有 CD 并找到 CD 的 Band。
我的解决方案是有一个字段 Band
在 CD 和 ArrayList<CD>
带内。
但我认为这不是一个好的解决方案。有谁知道针对这种情况的更好设计?
最佳答案
我明白你为什么不喜欢这个解决方案了。
您只存储一次信息,但您必须更新两个类中的更改。
如果更改CD
的Band
,则必须从旧的Band
中删除CD
,在CD
中设置Band
,然后将其添加到新的Band
中。
这当然很复杂而且容易出错。
您的类没有简单的 getter/setter。相反,您必须在域类中实现大量逻辑以保持一致性。
当然,优点是您始终可以访问CD
的Band
,反之亦然。这是一个权衡。例如,您是否应该使用 CD
的 Band
作为其 equals
实现的一部分。
这是一个有趣的替代方案,在某些情况下可能是有利的:
仅将您的类 Band
和 CD
用作简单的 POJO,并使用另一个类(即 MusicService
)来解析关系:
class MusicService {
Band getBand(CD cd);
List<CD> getCDs(Band band);
addCD(Band band, CD cd);
}
- 优点:关注点分离、无状态服务
- 缺点:代码较多
关于java - 如何在 Java 中表示 1..n 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510116/