我一直都知道Java中不鼓励循环依赖,但我很难理解彼此相关的对象之间的循环依赖是否很糟糕。例如,如果我有类TelevisionShow
,Season
和Episode
,以下是不好的做法?如果是这样,为什么?
public interface TelevisionShow {
List<Season> getSeasons();
}
public interface Season {
TelevisionShow getTelevisionShow();
List<Episode> getEpisodes();
}
public interface Episode {
Season getSeason();
}
答案 0 :(得分:2)
您将循环引用与循环引用混淆。如果Java垃圾收集器没有指向根引用的链接,它们可以检测循环引用和GC。
顺便说一下,这些接口没有问题。这在使用JPA时很常见,例如你有一个像你这里的双向关系。
答案 1 :(得分:0)
在对象之间使用circular dependencies
,(你使用错误的术语,它是循环引用)并不是一种坏习惯,但这取决于如何设计类模型。如果设计需要这样的循环引用,那么你可能会有这种关系。
例如,如果我有两个文件和文件夹接口,
public interface IMyFile
{
........
}
public interface IMyFolder
{
........
}
然后很好地理解每个folder
将包含files
和folders
的列表,因此IMyFolder
将是
public interface IMyFolder
{
List<IMyFolder> getFolders();
List<IMyFile> getFiles();
}
因此,在设计要求的对象中使用循环引用并不是一个坏习惯。