Возможные реальные причины добавления пользовательского объекта списка в тот же класс, что и поле в Java?

#java #list #oop #arraylist #field

#java #Список #ооп #arraylist #поле

Вопрос:

Я надеюсь, что вопрос не слишком расплывчатый или широкий для ответа. Я могу создать сам список везде, где мне это нужно; если мне это нужно как статическое поле, я могу сделать это и в других классах. Зачем мне добавлять пользовательский список в качестве поля в том же классе? Каковы сильные и слабые стороны этого подхода в ООП? Можете ли вы объяснить различия в результатах этих подходов?

Редактировать: обычно я использую пользовательские списки, как предлагается, для хранения нескольких экземпляров класса. Я изучаю код других людей и вижу эти подходы, в которых классы не имеют родительско-дочерних отношений с другими, но он определен как объект list в том же классе, что и поле для хранения нескольких экземпляров самого класса. Это напоминает мне эффект бесконечного зеркала. Итак, я хотел знать, чего мне здесь не хватает.

 class Record {
        String name;
        String surname;
        String phoneNumber;
        ArrayList<Record> phoneBook; 
    }

class Main {
    String x;
    String y;
    ArrayList<Record> phoneBook; 

}
  

Комментарии:

1. Класс с именем, Record содержащим phoneBook , звучит некорректно, поэтому дизайн отключен. Подобная рекурсивная структура возможна и полезна в некоторых случаях, но не здесь.

2. Сам по себе подход в порядке и может использоваться для представления любой древовидной / иерархической структуры данных ( Node ссылка на список Node s, генеалогическое дерево — Person наличие родителей и списков братьев, сестер и детей, Employee наличие босса и списка подчиненных. и т.д.)

Ответ №1:

Исходя из того, что вы говорите, предположим, что у вас есть 10 экземпляров класса Record, и предполагая, что в каждом классе вы сохранили список всех этих 10 экземпляров, тогда у вас фактически будет 100, и в зависимости от того, что вы делаете, производительность вашего приложения может пострадать.

С другой стороны, допустим, у вас есть 10 экземпляров класса Record, но вы храните только сам экземпляр в списке, это не имеет смысла, это вообще не будет полезно.

Наконец, логично было бы, чтобы при создании списка сохранялось несколько экземпляров класса, а затем вы могли получить доступ к данным каждого из них, поэтому использование списка в самом классе в этом случае бесполезно.