假设我有两门课:一门乐队,一门 CD。我希望能够轻松访问一个乐队的所有 CD 并找到一张 CD 的乐队。
我的解决方案是Band在 CD 中设置一个字段,ArrayList<CD>在 Band 中设置一个字段。
但我不认为这是一个很好的解决方案。有谁知道这种情况的更好设计?
我明白你为什么不喜欢这个解决方案。
您只存储信息一次,但必须更新两个类中的更改。
如果更改Banda 的CD,则必须CD从旧的 中删除Band,设置Band中的CD,然后将其添加到新的中Band。
这当然很复杂并且容易出错。
您的类没有简单的 getter/setter。相反,您必须在域类中实现大量逻辑以保持一致性。
当然,优点是您始终拥有可访问的内容Band,CD反之亦然。这是一个权衡。例如,如果您使用 aCD作为Band其equals实现的一部分,那么这是必要的。
这是一个有趣的替代方案,在某些情况下可能是有利的:
仅使用您的类Band作为CD简单的 POJO,并使用另一个类(即MusicService)来解析关系:
class MusicService {
Band getBand(CD cd);
List<CD> getCDs(Band band);
addCD(Band band, CD cd);
}
Run Code Online (Sandbox Code Playgroud)