2013-11-19 3 views
0

Я всегда знал, что круговые зависимости не приветствуются в java, но я изо всех сил пытаюсь понять, являются ли круговые зависимости между объектами, которые связаны друг с другом, плохими. Например, если у меня есть классы TelevisionShow, Season и Episode, будет ли следующая практика неправильной? Если да, то почему?Циклические зависимости в Java-классах с отношением «один ко многим»

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

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

public interface Episode { 
    Season getSeason(); 
} 
+0

Хорошо, это не круговая зависимость. –

+0

Здесь нет плохой практики. –

ответ

2

Вы смешиваете круговые зависимости с круговыми ссылками. Сборщик мусора java может обнаруживать циклические ссылки и GC, если у них нет ссылки на корневую ссылку.

Эти интерфейсы, кстати, не являются проблематичными. Это довольно часто при использовании JPA, например, у вас есть двунаправленные отношения, подобные тем, которые у вас есть.

0

Это не плохая практика, чтобы иметь circular dependencies, (вы используете неправильный термин это циклические ссылки) между объектами, но это зависит от того, как модель класса разрабатывается. Если дизайн требует таких круговых ссылок, то у вас могут быть эти отношения.

Например, если у меня есть два интерфейса для файла и папки,

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

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

Тогда это очень хорошо понимать, что каждый folder будет содержать список files и folders так IMyFolder будет

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

Так что совсем не плохая практика иметь круглые ссылки в объектах, как того требует дизайн.

Смежные вопросы