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

具有一对多关系的Java类中的循环依赖关系,java,architecture,Java,Architecture,我一直知道java不鼓励循环依赖,但我很难理解相互关联的对象之间的循环依赖是否有害。例如,如果我有TelevisionShow、Season、和插曲,以下是不好的做法吗?若然,原因为何 public interface TelevisionShow { List<Season> getSeasons(); } public interface Season { TelevisionShow getTelevisionShow(); List<Episo

我一直知道java不鼓励循环依赖,但我很难理解相互关联的对象之间的循环依赖是否有害。例如,如果我有
TelevisionShow
Season
、和
插曲
,以下是不好的做法吗?若然,原因为何

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

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

public interface Episode {
    Season getSeason();
}
公共界面电视节目{
列出getSeasons();
}
公共界面季{
电视秀getTelevisionShow();
列出getSpidences();
}
公共界面插曲{
季节获得季节();
}

您将循环依赖项与循环引用混淆了。java垃圾收集器可以检测循环引用,如果循环引用没有到根引用的链接,则对其进行GC


顺便说一下,这些接口没有问题。这在使用JPA时非常常见,例如,您在对象之间有一个双向关系。

在对象之间有
循环依赖关系是一个不错的做法,
(您使用了一个错误的术语,它是循环引用),但这取决于类模型的设计方式。如果设计需要此类循环引用,则可能存在此关系

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

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

public interface IMyFolder
{
   ........
}
然后很好地理解,每个
文件夹
将包含
文件列表
文件夹
,因此
IMyFolder

public interface IMyFolder
{
    List<IMyFolder> getFolders();
    List<IMyFile> getFiles();
}
公共接口IMyFolder
{
列出getFolders();
列出getFiles();
}

因此,按照设计要求在对象中使用循环引用一点也不坏。

好吧,这不是循环依赖。顺便说一句,这里没有不好的做法