具有一对多关系的Java类中的循环依赖关系

时间:2013-11-19 13:06:04

标签: java architecture

我一直都知道Java中不鼓励循环依赖,但我很难理解彼此相关的对象之间的循环依赖是否很糟糕。例如,如果我有类TelevisionShowSeasonEpisode,以下是不好的做法?如果是这样,为什么?

public interface TelevisionShow {
    List<Season> getSeasons();
}

public interface Season {
    TelevisionShow getTelevisionShow();
    List<Episode> getEpisodes();
}

public interface Episode {
    Season getSeason();
}

2 个答案:

答案 0 :(得分:2)

您将循环引用与循环引用混淆。如果Java垃圾收集器没有指向根引用的链接,它们可以检测循环引用和GC。

顺便说一下,这些接口没有问题。这在使用JPA时很常见,例如你有一个像你这里的双向关系。

答案 1 :(得分:0)

在对象之间使用circular dependencies(你使用错误的术语,它是循环引用)并不是一种坏习惯,但这取决于如何设计类模型。如果设计需要这样的循环引用,那么你可能会有这种关系。

例如,如果我有两个文件和文件夹接口,

public interface IMyFile
{
  ........
}

public interface IMyFolder
{
   ........
}

然后很好地理解每个folder将包含filesfolders的列表,因此IMyFolder将是

public interface IMyFolder
{
    List<IMyFolder> getFolders();
    List<IMyFile> getFiles();
}

因此,在设计要求的对象中使用循环引用并不是一个坏习惯。