Объект внутри объекта - PullRequest
3 голосов
/ 17 июня 2009

Как это называется, когда объект имеет внутри себя объект того же типа?

Пример:

public class Foo{

     public Foo myFoo;

}

Ответы [ 4 ]

14 голосов
/ 17 июня 2009

Я не думаю, что есть какое-то конкретное имя для этого. Хотя эта концепция используется во многих различных общих программных конструкциях. Например, при представлении графа, дерева или связанного списка узлы обычно имеют ссылки на другие узлы, с которыми они связаны / связаны.

5 голосов
/ 17 июня 2009

Это означает, что Foo является «рекурсивной структурой данных». Примерами этого являются деревья, графики, связанные списки и т. Д. Написано не так много значимых программ, которые не используют хотя бы некоторые рекурсивные структуры, например в любой реализации SQL-сервера довольно распространено, что выполняемый план запроса будет определен аналогичным образом. В качестве крошечного примера, предложение WHERE может быть переведено в FilterNode, который действует на данные, полученные от некоторого другого Node (например, сканирование таблицы):

public interface Node { }

public class FilterNode implements Node {
    public Node underlyingNode;
    public Condition filterCondition;
}

Во многих случаях общая структура образует ориентированный ациклический граф, что означает, что его легко безопасно пересечь рекурсивно. Но если у него есть циклы, вам нужно быть осторожным, чтобы не попасть в бесконечную рекурсию (о чем с юмором предупреждает другой ответ выше).

4 голосов
/ 17 июня 2009

Рекурсивное сдерживание ....:)

1 голос
/ 17 июня 2009

Чтобы добавить к тому, что сказал Кибби, это тип составного паттерна

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...